Javascript 异步等待状态已解决,但ajax未完成
我试图等待Javascript 异步等待状态已解决,但ajax未完成,javascript,ajax,promise,async-await,Javascript,Ajax,Promise,Async Await,我试图等待getJson调用并处理返回的数据。我已经看到了很多答案,并尝试使用$.ajax的异步:false(由于查询是跨域的,所以不起作用)、回调和基本$.ajax调用的.done部分。现在我正在尝试异步等待。我的代码如下所示: var ths=getTrailheads(turl); console.log(“trailheads承诺”); 控制台日志(ths); ths.then(功能(数据){ addTrailheadsToMap(数据); }); 异步函数getTrailheads(
getJson
调用并处理返回的数据。我已经看到了很多答案,并尝试使用$.ajax
的异步:false
(由于查询是跨域的,所以不起作用)、回调和基本$.ajax
调用的.done
部分。现在我正在尝试异步等待。我的代码如下所示:
var ths=getTrailheads(turl);
console.log(“trailheads承诺”);
控制台日志(ths);
ths.then(功能(数据){
addTrailheadsToMap(数据);
});
异步函数getTrailheads(turl){
var result=await$.ajax({
网址:turl,
数据类型:“json”
});
返回结果;
}
您在getTrailheads
内部正确地使用了async/await,但是调用它的代码也需要使用async/await或以其他方式处理承诺。假设代码可以是async
,您可能只需要在调用之前添加wait
:
var ths=await getTrailheads(turl)代码>
async/await或多或少是承诺之上的语法糖,这就是为什么不等待getTrailheads
返回承诺的结果。您还可以使用getTrailheads(turl)。然后(ths=>{…})
如果效果更好的话。var ths=getTrailheads(turl)代码>应为var ths=await getTrailheads(turl)代码>。您需要等待异步调用的结果谢谢。但是当我这样做的时候,我得到了对象,但是状态仍然是“正在处理”,你需要一直异步,或者在某个时候使用承诺模式来处理回调当你的异步函数完成时在你的更新中,你在等待然后
之前记录函数的结果(承诺)。移动控制台。将呼叫记录在内,然后块谢谢。在更新中,它不会返回承诺,而是返回对象(因此它不可更改)。谢谢。我用我目前的情况更新了这个问题。我取回了目标而不是承诺,但当我得到它时它仍然不完整。标记为已接受,因为这是正确的方式。最终,是服务器端的一些零星故障让我绊倒了。谢谢你的帮助!