我有一个异步功能(一个Promise),它可以做一些事情。我必须叫它N次。 每个呼叫代表一个模拟点。 我的第一个猜测是使用循环:
for(let i=0; i < N; i++) {
myAsyncFunc(data[i])
.then(() => myAsyncFunc(data[i]) )
}
显然,这不起作用,因为循环以及在对myAsyncFun的任何后续调用之前。 我该如何逐步调用异步功能,等待结果并继续进行下一步?
我尝试过这个:
function myAsyncFunc(data) {
return new Promise( (resolve, reject) => {
anotherAsync.then(resolve).catch(reject);
}
}
function simulate(mode) {
[...Array(10)].reduce((p, _, i) =>
p.then(_ => new Promise(resolve => {
myAsyncFunc(data[i]); // <== this return a Promise
}
))
, Promise.resolve());
}
但是函数myAsyncFunc没有顺序调用。
答案 0 :(得分:0)
我用async/await
解决了,显然,它似乎通过异步函数调用JS的细节解决了杂技
function myAsyncFunc(data) {
anotherAsync.then( () => return );
}
async function simulate(mode) {
for(let i=0; i < tempModel[0].linear.length; i++)
{
let a = await myAsyncFunc(mode,i);
}
}