javascript - Ajax Javascript Promise 返回错误值
问题描述
我对承诺有一个真正的问题。我使用的 API 的工作方式是您首先请求一个 reportID,然后查询该 reportID 以获取您的数据。
在我尝试实现承诺之前,我的 ajax 代码过去可以正常工作。现在它只响应来自“get”查询的reportID,但我真正想要返回的是来自“return (result);”的数据响应。
我认为这与我在顶部的 getReport 前面使用“return”有关,但如果我将其删除,它将违反我的承诺
index2.html:16 未捕获的类型错误:无法读取 index2.html:16 处未定义的属性“完成”
索引.html
function firstFunction() {
return getReport(2, 'queue', 'hour', '2018-09-09', '2018-09-10', 'pageviews', 'page', 's1390_5bbb443734ab6a764639ff37');
};
var test = firstFunction();
test.done(function(data) {
alert(data);
});
报告.js
function getReport(ref)
{
return $.ajax({
url: "report.php",
dataType: 'json',
data: {
ref: ref
},
success: function(result){
if (type == 'queue')
{
getReport(result.reportID, 'get');
}
else if(result.error == "Bad Request")
{
}
else if(result.error == "report_not_ready")
{
setTimeout(function(){
getReport(ref, 'get');
},1000);
}
else
{
return (result);
}
}
});
}
解决方案
推荐阅读
- fp-ts - 在 fp-ts 中使用 Option 而不是 typescript 的 optional 有什么好处(问号)
- javascript - 如何通过单击进入打开上下文菜单?
- mfc - 显示嵌套在另一个控件中的控件的 MFC 工具提示
- c# - 迭代和比较两个类列表的更快方法
- python - PUT 请求:JSONObject 文本必须在 1 [字符 2 第 1 行] 处以 '{' 开头
- android - 如何将自定义字体设置为在 Android 中加载了 WebView 的 html?
- php - 无法使用 ZipArchive 打开 zip
- java - Gradle 在 Ubuntu 终端中从版本 6 降级到版本 5
- c# - Kestrel 服务器因异常而崩溃
- m2doc - 无效类型文字导入 - 如何导入和使用我的自定义服务