forEach & Promise.all() 不起作用
forEach & Promise.all() doesn't works
我对 forEach Promise 有疑问...它不适用于 AdonisJS。
await Promise.all(items.map(async (item) => {
console.log(item)
}))
没有控制台记录...
我敢打赌 Promise.all return 是一个空列表,否则控制台至少会记录一些东西 ^^
确保 items 对象是一个 iterable 对象,这样 Promise.all 就不会抛出异常
假设我们在您的 adonis 项目根目录中使用 adonis cli repl 对此进行测试,以便您可以测试您的应用程序模型并确保您的问题不是来自 adonis
#!/bin/bash
cd <your adonis project root folder>
adonis repl
# stupid test with a fake iterable object
const MAX_ITEMS = 5
const items = []
for (let i = 0; i < MAX_ITEMS; ++i) {
items.push(i % 2 === 0? i / 2: i * 3 + 1)
}
// let items = []
await Promise.all(items.map(async (item) => {
console.log(item)
return item % 2 === 0 ? item / 2: item * 3 + 1
}))
现在控制台会记录这个
0
4
1
10
2
而 Promise.all 调用的结果会给出这个
[ 0, 2, 4, 5, 1 ]
如果你在没有可迭代对象的情况下使用 Promise.all 你会看到一些错误(让你测试使用 adonis repl)
adonis repl
let itemsAsObject = {}
let itemsAsUndefined = undefined
let itemsAsEmptyList = []
async function testPromise(items) {
return Promise.all(items.map(async (item) => {
console.log(item)
return await item % 2 === 0 ? item / 2: item * 3 + 1
}))
}
await testPromise(itemsAsObject) // throws an error
await testPromise(itemsAsUndefined) // throws an error
await testPromise(itemsAsEmptyList) // returns []
您可以对自己的 Lucid 模型使用相同的机制
干杯:)
我对 forEach Promise 有疑问...它不适用于 AdonisJS。
await Promise.all(items.map(async (item) => {
console.log(item)
}))
没有控制台记录...
我敢打赌 Promise.all return 是一个空列表,否则控制台至少会记录一些东西 ^^
确保 items 对象是一个 iterable 对象,这样 Promise.all 就不会抛出异常
假设我们在您的 adonis 项目根目录中使用 adonis cli repl 对此进行测试,以便您可以测试您的应用程序模型并确保您的问题不是来自 adonis
#!/bin/bash
cd <your adonis project root folder>
adonis repl
# stupid test with a fake iterable object
const MAX_ITEMS = 5
const items = []
for (let i = 0; i < MAX_ITEMS; ++i) {
items.push(i % 2 === 0? i / 2: i * 3 + 1)
}
// let items = []
await Promise.all(items.map(async (item) => {
console.log(item)
return item % 2 === 0 ? item / 2: item * 3 + 1
}))
现在控制台会记录这个
0
4
1
10
2
而 Promise.all 调用的结果会给出这个
[ 0, 2, 4, 5, 1 ]
如果你在没有可迭代对象的情况下使用 Promise.all 你会看到一些错误(让你测试使用 adonis repl)
adonis repl
let itemsAsObject = {}
let itemsAsUndefined = undefined
let itemsAsEmptyList = []
async function testPromise(items) {
return Promise.all(items.map(async (item) => {
console.log(item)
return await item % 2 === 0 ? item / 2: item * 3 + 1
}))
}
await testPromise(itemsAsObject) // throws an error
await testPromise(itemsAsUndefined) // throws an error
await testPromise(itemsAsEmptyList) // returns []
您可以对自己的 Lucid 模型使用相同的机制
干杯:)