gpt4 book ai didi

javascript - 如何将返回 promise 的函数推送到接受参数的数组

转载 作者:行者123 更新时间:2023-12-02 23:08:44 24 4
gpt4 key购买 nike

所以我有一堆mysql调用,我希望通过将逻辑分离到它们自己的函数和我想要做的事情中来使代码更干净和更可重用,因为调用的数量总是会增长,构建一个 Promise 数组并通过 Promise.all 执行它们。我已经熟悉这个概念,但通常我的方法是这样的:

const promiseChain = []

array.forEach(item => promiseChain.push(new Promise((resolve, reject) { ... logic });

或者类似的东西。但我不能放弃这样做,因为我想分离所有逻辑,所以现在我有一堆不同的函数,所有函数都返回 promise 。我对现在可以使用什么语法将函数添加到数组而不实际调用它们感到有点困惑。我确实看到了一个答案,其中指定了这样的内容:

常量数组 = [func1, func2]

虽然我认为这不起作用,但我的函数都有不同的参数。有没有一种好的、干净的方法来添加将 promise 返回到也接收参数的数组(显然不执行它们)的函数?或者只是像这样:

promiseChain.push(new Promise((resolve, reject) => {
functionPromise(params).then(() => resolve()).catch(err => reject(err))
})

我想我要问的是,还有比上面更好的方法吗?由于这些函数已经返回了 Promise,所以代码似乎多于必要的数量。看起来有点矫枉过正。

最佳答案

is there a better way to do it then the above?

您的示例相当于:promiseChain.push(functionPromise(params));

Is there a good, clean way to add functions that return promises to an array (obviously without executing them) that also receive parameters

要添加函数而不执行它们:array.push(functionPromise);

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

array.push(funcitonPromise.bind(funcitonPromise, ...params))

然后可以通过以下方式调用它们:

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

关于javascript - 如何将返回 promise 的函数推送到接受参数的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57465750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com