agm*_*984 5 javascript async-await ecmascript-6 ecmascript-2017
由于await无法在Array.map或内部使用Array.reduce,您可以执行以下操作或将其视为滥用Promise.all吗?通常,neo4j.session()将等待。
// inside a function
const QUERY = 'MATCH (n) RETURN n'
const argsArray = [{ sample: 'sadf' }, { sample: 'sadf' }, { sample: 'sadf' }]
const runQueries = argsArray.map(obj => neo4j.session.run(QUERY, obj.sample))
await Promise.all(runQueries)
.then(results => results.forEach(result => console.log(result)))
Run Code Online (Sandbox Code Playgroud)
Promise.all() 是否执行函数数组?
不,这是一系列的承诺
或者当您将它们放入数组时它们会执行吗?
确切地说,当您构建 Promise 时,它们就会被执行。
这会被视为滥用 Promise.all 吗?
不,这完全没问题,这实际上是 Promise.all 的重点。
但是你可以这样做(一个接一个而不是并行执行):
(async function(){
for(const obj of argsArray)
console.log( await neo4j.session.run(QUERY, obj.sample));
})()
Run Code Online (Sandbox Code Playgroud)