使用动态生成的参数通过函数调用 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()))