Javascript 带有异步调用的同步循环
这就是我需要完成的: 我有一个函数(我们称之为promise)返回承诺 我有一个包含不同参数的数组来运行promise。 例如: 我将解析的Javascript 带有异步调用的同步循环,javascript,node.js,asynchronous,es6-promise,Javascript,Node.js,Asynchronous,Es6 Promise,这就是我需要完成的: 我有一个函数(我们称之为promise)返回承诺 我有一个包含不同参数的数组来运行promise。 例如: 我将解析的值相加为一个变量,我们称之为total 这就是我被困的地方: 我需要使用下一组参数运行promise,前提是promise的结果总和total低于定义的数量 我尝试使用.each(),但这不起作用,因为在调用next()函数之前,会调用下一个承诺 当前(不工作)解决方案: async.each(paramaters, function(options, ne
值
相加为一个变量,我们称之为total
这就是我被困的地方:
我需要使用下一组参数运行promise,前提是promise的结果总和total
低于定义的数量
我尝试使用.each()
,但这不起作用,因为在调用next()
函数之前,会调用下一个承诺
当前(不工作)解决方案:
async.each(paramaters, function(options, next) {
thePromise(options).then(function(value) {
total += value;
if (total > 10) {
return next('limited');
}
next();
}).catch(next);
}, function(err) {
if (err && err !== 'limited) { // Handle error }
// Handle success
});
您需要从文档中使用:
与之相同,只有迭代器应用于系列中的arr中的每个项。下一个迭代器仅在当前迭代器完成后调用。这意味着迭代器函数将按顺序完成
通过这种方式,您可以实现异步调用的同步迭代尝试添加用于迭代参数的函数调用。@Bogdan.Nourescu doneI现在觉得很愚蠢。我已经有了解决办法。谢谢
async.each(paramaters, function(options, next) {
thePromise(options).then(function(value) {
total += value;
if (total > 10) {
return next('limited');
}
next();
}).catch(next);
}, function(err) {
if (err && err !== 'limited) { // Handle error }
// Handle success
});