gpt4 book ai didi

javascript - 在编写函数时解决所有参数的 promise 是个好主意吗?

转载 作者:行者123 更新时间:2023-12-03 08:45:18 28 4
gpt4 key购买 nike

如果我的项目大量使用 Promise,那么在编写函数时解决所有参数的 Promise 是一个好主意吗?例如,

function foo (arg1, arg2, arg3) {
// do stuff with arg1, arg2, arg3
}

let pArg1 = getArg1Async();
let pArg2 = pArg1.then(calcArg2Async);
let pArg3 = getArg3Async();

let p = Promise.join(pArg1, pArg2, pArg3, foo);

变成了

function foo(pArg1, pArg2, pArg3) {
return Promise.join(pArg1, pArg2, pArg3, function(arg1, arg2, arg3) {
// do stuff with arg1, arg2, arg3
});
}

let pArg1 = getArg1Async();
let pArg2 = pArg1.then(calcArg2Async);
let pArg3 = getArg3Async();

let p = foo(pArg1, pArg2, pArg3);

最佳答案

这通常被称为“提升”的一种方法。这是一种有用且已知的技术,您可以轻松编写一个帮助程序来为您完成此操作:

function lift(fn){
return function(){
return Promise.all.call(this, arguments).then(fn);
}
}

或者在“现代节点”中忽略这个:

const lift = fn => (...args) => Promise.all(args).then(fn)

这会让你这样做:

var lifted = lift(myFn);
// fn will run when the promises resolve
// and return a promise for the value.
var res = lifted(promise1, promise2);

关于javascript - 在编写函数时解决所有参数的 promise 是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918633/

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