Javascript 承诺,等待
在尝试移动嵌套承诺时,我遇到了一些不同的问题。所有问题都是等待/异步的 我想我只是不明白我应该如何使用诺言。一切等待 我想做一些像下面这样的事情-循环一个数组,对它执行一个操作,并将结果保存到一个varibale-准备用于下一个Promise.allJavascript 承诺,等待,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
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
函数返回什么?如果您在数组中获得未定义的值,则您的函数有错。请给我们看看他们的代码。读了这篇文章,我完全明白我做错了什么——非常感谢。我想我明白了:)