Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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_Promise - Fatal编程技术网

Javascript 函数完成后如何重复调用?

Javascript 函数完成后如何重复调用?,javascript,node.js,promise,Javascript,Node.js,Promise,我想调用一个函数main(),它包含许多异步db连接调用。我想在main()的迭代完成后重复调用此函数 我应该如何在Nodejs中做到这一点?我认为有一些方法可以利用这里的承诺来做到这一点。但我不能朝着正确的方向思考 您可以将所有异步承诺分组到一个承诺对象中,并在满足所有承诺后再次执行函数。有关承诺分组的更多信息: 如果不考虑承诺完成,则不应再次运行函数,这可能会导致奇怪的行为。使用promise.all等待所有承诺完成 之后,您可以调用。然后(main) 我认为更好的方法是在main()函数

我想调用一个函数main(),它包含许多异步db连接调用。我想在main()的迭代完成后重复调用此函数


我应该如何在Nodejs中做到这一点?我认为有一些方法可以利用这里的承诺来做到这一点。但我不能朝着正确的方向思考

您可以将所有异步承诺分组到一个承诺对象中,并在满足所有承诺后再次执行函数。有关承诺分组的更多信息:


如果不考虑承诺完成,则不应再次运行函数,这可能会导致奇怪的行为。

使用promise.all等待所有承诺完成

之后,您可以调用
。然后(main)


我认为更好的方法是在main()函数中使用承诺,在该承诺得到解决后,再次调用main()。但是如何重复这样做呢?难道你没有多重承诺吗?如果您只有一个,那么只需在承诺回调的末尾调用main就可以了。因为它是异步代码,所以您必须向我们展示实际的异步代码,以便我们可以更具体地向您提供建议。像这样没有任何实际代码的一般性问题要求人们提供试图“猜测”您实际在做什么的一般性答案,并且如果您向我们展示您的实际代码,这些问题很少像答案那样有针对性。假设我将所有承诺都归为一类。但是如何重复调用这个函数呢?你可以递归地调用它,当所有的承诺都得到满足时,在回调内部调用它。你能为递归部分举个例子吗?
function main() {
  var promises = [];

  promises.push(...);
  promises.push(...);
  ...

  Promise.all(promises).then(main);
}