Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有异步调用的同步循环_Javascript_Node.js_Asynchronous_Es6 Promise - Fatal编程技术网

Javascript 带有异步调用的同步循环

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

这就是我需要完成的:

我有一个函数(我们称之为promise)返回承诺

我有一个包含不同参数的数组来运行promise。 例如:

我将解析的
相加为一个变量,我们称之为
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
});