我正在处理一个项目,需要我使用JavaScript进行API方法调用。 我是一名Java程序员,以前从未进行过Web开发,所以我遇到了一些问题。
这个API方法是异步的,并且它在while循环中。如果它返回一个空数组,那么while循环就会结束。否则,它会一直循环。 代码:
var done = true;
do
{
async_api_call(
"method.name",
{
// Do stuff.
},
function(result)
{
if(result.error())
{
console.error(result.error());
}
else
{
// Sets the boolean to true if the returned array is empty, or false otherwise.
done = (result.data().length === 0) ? true : false;
}
}
);
} while (!done);
这个不起作用。循环结束之前,“done”的值没有被更新。我已经阅读了一些关于这个主题的资料,似乎我需要使用promise或回调,因为API调用是异步的,但我无法理解如何将它们应用到上面的代码中。
帮助将不胜感激!
function(result)
)来更新UI。 - Erik Terwanasync_api_call
已经被触发了,所以它会通过,不会等待回调。这不就是异步调用的目的吗?先阅读这篇文章:https://dev59.com/6XRB5IYBdhLWcg3wAjTR ,也许它能澄清异步函数的含义。因为你还不能更新done
变量,所以!done
是假的,并且打破了 do while 循环。 - Dinca Adrianasync_api_call
。这是因为所涉及的方法只能批处理50个数据,而我需要处理成千上万个项目,因此我需要继续循环调用它,直到所有项目都被处理完毕。 - Stepdone = result.data().length === 0
,而不是在其后面加上? true : false
。 - J.Ko