Javascript 如何将一个函数推送到一个接受参数的数组,该数组返回一个承诺

Javascript 如何将一个函数推送到一个接受参数的数组,该数组返回一个承诺,javascript,es6-promise,Javascript,Es6 Promise,因此,我正在进行一系列mysql调用,我希望通过将逻辑分离到它们自己的函数中,使代码更干净、更可重用。我想做的是,因为调用的数量总是会增加,所以我要构建一个promise数组,并通过promise.all执行它们。我已经熟悉这个概念,但通常我的方法是这样的: const promiseChain = [] array.forEach(item => promiseChain.push(new Promise((resolve, reject) { ... logic }); prom

因此,我正在进行一系列mysql调用,我希望通过将逻辑分离到它们自己的函数中,使代码更干净、更可重用。我想做的是,因为调用的数量总是会增加,所以我要构建一个promise数组,并通过
promise.all
执行它们。我已经熟悉这个概念,但通常我的方法是这样的:

const promiseChain = []

array.forEach(item => promiseChain.push(new Promise((resolve, reject) { ... logic }); 
promiseChain.push(new Promise((resolve, reject) => {
functionPromise(params).then(() => resolve()).catch(err => reject(err))
})
或者类似的东西。但我不能放弃这样做,因为我想分离出所有的逻辑,所以现在我有了一堆不同的函数,所有返回的承诺。我有点困惑,我现在可以使用什么语法将函数添加到数组中而不实际调用它们。我确实看到了一个这样的答案,它指明了如下内容:

const promiseChain = []

array.forEach(item => promiseChain.push(new Promise((resolve, reject) { ... logic }); 
promiseChain.push(new Promise((resolve, reject) => {
functionPromise(params).then(() => resolve()).catch(err => reject(err))
})
const数组=[func1,func2]

虽然我不认为这是可行的,但是我的函数都有不同的参数。有没有一种好的、干净的方法来添加函数,这些函数将承诺返回给同时接收参数的数组(显然不执行承诺)?或者只是像这样:

const promiseChain = []

array.forEach(item => promiseChain.push(new Promise((resolve, reject) { ... logic }); 
promiseChain.push(new Promise((resolve, reject) => {
functionPromise(params).then(() => resolve()).catch(err => reject(err))
})
我想我要问的是,有没有比上面提到的更好的方法?因为这些函数已经返回了承诺,所以看起来代码太多了。看起来太过分了

有没有比上述更好的方法

你的例子相当于:
promiseChain.push(functionPromise(params))

是否有一种好的、干净的方法来添加函数,这些函数将承诺返回给同时接收参数的数组(显然不执行承诺)

要添加函数而不执行它们,请执行以下操作:
array.push(functionPromise)

参数可以绑定到数组中的函数:

array.push(funcitonPromise.bind(funcitonPromise, ...params))
然后,可以通过以下方式调用它们:

await Promise.all(array.map(func => func()));

当您的函数已经返回承诺时,您肯定不需要构建新的承诺,但我不确定您到底想做什么。all并不能使承诺串联解析,它只是等待所有承诺解析,因此您可以在创建/填充数组时调用函数。只需执行
const promises=[func1(params1),func2(params2)]
promises.push(func3(params3))
如果你想串联执行它们,那么
承诺。所有的
都不是正确的选择(因为你只需要等待一个承诺来解决)。您应该执行类似于
func1(params1)。然后(=>func2(params2))。然后(=>func3(params3))
等待func1(params1);等待功能2(参数2);wait func3(params3)
好的,我认为这是有道理的,我想我没有那样想。我会试试的。