我在兑现承诺方面遇到了实际问题。我使用的API的工作方式是,您首先请求一个reportID,然后查询该reportID以获取数据。
在我尝试实现promise之前,我的ajax代码曾经可以正常工作。现在,它仅使用“ get”查询中的reportID进行响应,但是我真正想要返回的是来自“ return(result);”的数据响应。
我认为这与我在顶部的getReport前面使用“ return”有关,但是如果我删除它,则会违反我的诺言
index2.html:16未捕获的TypeError:无法读取的属性“完成” 未定义 在index2.html:16
index.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);
});
report.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);
}
}
});
}