使用动态生成的参数通过函数调用 promise.all
Calling a promise.all with a function using dynamically generated parameters
你好,我正在尝试 运行 使用不同的参数异步地执行相同的函数,但无法弄清楚如何在没有 运行 在 promise all 之前对它们进行 ning 的情况下存储这些函数。
这是我正在尝试做的事情的简化示例:
const myFunc = async(paramsAsArray) => {
// does stuff
}
let paramArray = [ [a,b], [c, d], [e, f] ]
let funcArray = []
for (let i = 0; i < paramArray.length; i++) {
funcArray.push(myFunc(paramArray[i]))
}
const response = await Promise.all(funcArray)
在我可以使用 promise.all() 之前,我的函数将 运行ning 保留在 for 循环中。有谁知道我可以做些什么来让他们 运行 使用 promise all?感谢任何帮助或建议,谢谢!
myFunc(paramArray[i])
立即调用函数。您正在调用它,因此您不是将函数本身推入数组,而是将其返回值推入。此外,Promise 解析会立即开始,而不是在 Promise.all
.
中
要在不调用函数的情况下推送函数本身,并仍然向其传递参数,请使用 .bind
:
funcArray.push(myFunc.bind(this, paramArray[i]))
您还可以使用 .map()
构建数组:
const funcArray = paramArray.map( params => myFunc.bind(this, params));
将您的函数包装在另一个函数中,这样它就不会立即被调用。然后在 Promise.all
里面调用它
funcArray.push(() => myFunc(paramArray[i]))`
const response = await Promise.all(funcArray.map(f=> f()))
你好,我正在尝试 运行 使用不同的参数异步地执行相同的函数,但无法弄清楚如何在没有 运行 在 promise all 之前对它们进行 ning 的情况下存储这些函数。
这是我正在尝试做的事情的简化示例:
const myFunc = async(paramsAsArray) => {
// does stuff
}
let paramArray = [ [a,b], [c, d], [e, f] ]
let funcArray = []
for (let i = 0; i < paramArray.length; i++) {
funcArray.push(myFunc(paramArray[i]))
}
const response = await Promise.all(funcArray)
在我可以使用 promise.all() 之前,我的函数将 运行ning 保留在 for 循环中。有谁知道我可以做些什么来让他们 运行 使用 promise all?感谢任何帮助或建议,谢谢!
myFunc(paramArray[i])
立即调用函数。您正在调用它,因此您不是将函数本身推入数组,而是将其返回值推入。此外,Promise 解析会立即开始,而不是在 Promise.all
.
要在不调用函数的情况下推送函数本身,并仍然向其传递参数,请使用 .bind
:
funcArray.push(myFunc.bind(this, paramArray[i]))
您还可以使用 .map()
构建数组:
const funcArray = paramArray.map( params => myFunc.bind(this, params));
将您的函数包装在另一个函数中,这样它就不会立即被调用。然后在 Promise.all
funcArray.push(() => myFunc(paramArray[i]))`
const response = await Promise.all(funcArray.map(f=> f()))