我写了一个函数,它将根据条件返回输入承诺或空承诺
export const promiseUtility = (promise, condition) => {
if (condition) {
return promise;
} else {
return new Promise(resolve => resolve());
}
};
当我调用这个函数时
const arr= [
promiseUtility({
promise: getUsers(req, type, id),
condition: req.body.shouldGetUsers
}),
promiseUtility({
promise: getObjects(req, type, id),
condition: req.body.shouldGetObjects,
];
const [users =[], objects =[]] = await Promise.all(arr)
我现在面临的问题是,当shouldGetUsers
这样的条件为false时,即使原来的承诺getUsers(req)
也得到了解决,看来这是因为我调用了那个getUsers
函数,我该如何处理这种情况呢
2条答案
按热度按时间wwwo4jvm1#
如果你不希望一个承诺被解析,你首先就不能创建它,但是当你把
getUsers(req, type, id)
作为promise
参数传递给你的promiseUtility
函数时,你已经创建了一个承诺。我建议您使用conditional operator,它只在条件为真时才执行
getUsers
函数:jvlzgdj92#
我同意海科的回答,但是,我发现如果我们想建立一个通用的效用函数,那么我们可以这样做。