【发布时间】:2018-07-17 06:41:50
【问题描述】:
我有一个对象数组,我正在循环并以它们作为参数调用一个函数。这是一个 async/await 函数,我想创建一个 PromiseAll,它会在所有 async/await 调用结束时解析。我使用数组映射将它们转换为 Promise,但 Promise 会立即解析,并且不要等到所有 await 调用都已完成。
async function runTest({_id, name, live, dev}) {
(async () => {
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
} catch(error) {
await browser.close()
} finally {
await browser.close()
return
}
})();
}
module.exports = (tests) => {
let testPromises = tests.map((test) => {
return runTest(test).then(function (res) {
return console.log(res, 'done')
})
});
Promise.all(testPromises).then((data) => {
console.log('Done resolving')
}).catch(function(err){
})
}
在解决 PromiseAll 之前,保证所有数组对象都已通过函数并完成处理的正确方法是什么?我对 async/await 不是很熟悉。
【问题讨论】:
-
我认为您不应该根据此处的文档在映射中调用 then:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
runTest 函数中是否缺少 return 语句?
-
@sctskw 有或没有相同的问题。
-
@JamesIves 您仍然没有返回您在 runTest 中调用的匿名异步函数的结果。
-
你不需要匿名异步函数
标签: javascript puppeteer