Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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_Async Await_Es6 Promise - Fatal编程技术网

Javascript 承诺,等待

Javascript 承诺,等待,javascript,node.js,promise,async-await,es6-promise,Javascript,Node.js,Promise,Async Await,Es6 Promise,在尝试移动嵌套承诺时,我遇到了一些不同的问题。所有问题都是等待/异步的 我想我只是不明白我应该如何使用诺言。一切等待 我想做一些像下面这样的事情-循环一个数组,对它执行一个操作,并将结果保存到一个varibale-准备用于下一个Promise.all doThing()和doating()都是异步函数 const foo = await Promise.all(arr.map(p => doAThing(p))); const bar = await Promise.all(foo.map

在尝试移动嵌套承诺时,我遇到了一些不同的问题。所有问题都是等待/异步的

我想我只是不明白我应该如何使用诺言。一切等待

我想做一些像下面这样的事情-循环一个数组,对它执行一个操作,并将结果保存到一个varibale-准备用于下一个Promise.all

doThing()
doating()
都是异步函数

const foo = await Promise.all(arr.map(p => doAThing(p)));
const bar = await Promise.all(foo.map(p => doAnotherThing(p)));
我得到了很多未定义的结果,而且肯定不会等到结果出来后再继续

我真的只是想尽量避免被套住

谢谢, Ollie

如果
doAThing()
返回一个承诺,该承诺在所有异步操作完成时解析为一个值,那么
foo
将是这些解析值的数组

如果在
foo
数组中获得
undefined
值,则要么没有从
doAThing()
返回任何内容,要么返回解析为
undefined
的承诺

如果
wait
没有等待所有异步操作完成,那么您要么根本没有从
doAThing()
返回承诺,要么在所有异步操作完成之前该承诺已得到解决。要使所有这些正常工作,
doAThing()
必须返回一个承诺,该承诺只有在您想要等待的所有异步操作实际完成时才能得到解决。承诺没有魔力。它们必须正确连接,以便在相应的异步操作完成时解决问题。如果在
doAThing()
中有多个异步操作,则必须同时监视这些操作,以便函数在所有操作完成后返回一个承诺(链接或使用
promise.all()
本身)


为了让我们更具体地帮助您,您必须向我们展示
doAThing()
的代码。然后,我们可以向您显示代码需要修复的确切位置。

doAThing
doanothing
函数返回什么?如果您在数组中获得
未定义的值,则您的函数有错。请给我们看看他们的代码。读了这篇文章,我完全明白我做错了什么——非常感谢。我想我明白了:)