使用ES6 Promise惯用地处理前提条件
我是ES6
Promises的新手,并且一直在进行研究。我在NodeJS中执行了一些执行异步工作的代码,但是我有一些必须先检查的前提条件。我正在寻求处理这种情况(如果存在这种情况)以及一些推理的
。我已经有了有效的代码,希望能对您有所了解。
考虑以下虚构的片段:
function doStuff(data, cb) { if (!data) {
return cb(new Error("Don't be an idiot"));
}
externalLibrary.doSomethingCallbackAsync(data, cb);
}
如果我将其转换为承诺国,我看到两个选择。
,我可以在promise中包含前提条件。
function doStuff(data){ return new Promise((resolve, reject) => {
if (!data) {
return reject(new Error("Don't be an idiot"));
}
externalLibrary.doSomethingCallbackAsync(data, function(err, newData) {
if (err) {
return reject(err);
}
return resolve(newData);
});
});
}
,我可以在承诺之前运行前提条件。我不确定我是否了解的意图Promise.reject()
,但通过允许我返回立即被拒绝的诺言似乎符合要求。
function doStuff(data){ if (!data) {
return Promise.reject(new Error("Don't be an idiot"));
}
return new Promise((resolve, reject) => {
externalLibrary.doSomethingCallbackAsync(data, function(err, newData) {
if (err) {
return reject(err);
}
return resolve(newData);
});
});
}
由于可读性的原因,我更喜欢 ,但是我不完全理解Promise.reject()
,我担心
滥用了它。重申一下,我正在寻找最佳实践的解决方案。
回答:
我不确定我是否了解的意图
Promise.reject()
,但这似乎很合适
您已经正确理解了。它是针对此类用例而明确设计的。加油,这 是 最佳做法。
选项2的优点是,它与已经执行了返回诺言(认为return
externalLibrary.doSomethingAsync(data))的API一起使用时更加清洁,并且使用Promise
构造函数antipattern的机会更少。
以上是 使用ES6 Promise惯用地处理前提条件 的全部内容, 来源链接: utcz.com/qa/403403.html