你是否应该在承诺中解决或拒绝后退货
Should you return something after resolving or rejecting in a Promise?
假设我有一个类似以下的Promise:
new Promise((resolve, reject) => {
// Some random conditional
if (today === 'Friday') {
console.log("I'm resolving this thing here");
resolve('taco');
// Should I have a return true or false here?
}
console.log("Code made it past the first resolve");
// Do some other code here, like connect to a database or API or something.
connectToDatabase(function(result){
// result was 'hamburger'
resolve(result);
});
}).then((value) => {
console.log(value);
});
在这个例子中,我得到以下输出:
I'm resolving this thing here
Code made it past the first resolve
taco
因此,在我执行resolve
之后,Promise代码将继续执行。在上面的例子中,我不必要地连接到某个数据库或端点或其他什么。显然,发送resolve
被忽略了,这很好。但是,从服务成本的角度来看,连接到数据库和API是昂贵的,尤其是如果你每次提出AWS服务之类的请求都要花钱。
所以我的问题是,我应该放一个return true;
还是在第一个resolve
之后?
与reject
类似,我应该在reject
之后放入return false
还是(true??(?
new Promise((resolve, reject) => {
someAsyncFunction((err, result) => {
if (err) {
reject(err);
// Should I have a return true or false here or something?
}
// Do something here, like connect to a database or fetch a value from some API endpoint or something.
resolve(result);
});
});
如果我不想在reject
之后执行代码,我应该返回,对吗?
当我浏览各种ES6文档时,我找不到任何地方可以清楚地说明这一点。。。很多Promise的例子通常都非常简单。
如果我真的归还了这些东西,我应该归还什么?true
?false
?还是CCD_ 11?
对promise如何工作以及何时使用resolve、reject 的基本理解
function d() {
console.log("D started");
return Promise.reject(new Error("Aborted from D function"));
//return Promise.resolve("Done with D");
}
function c() {
console.log("C Started");
//return Promise.reject(new Error("Aborted from C function"));
//return Promise.resolve("Done with C");
return d().then(result => {
return Promise.resolve(result);
}).catch(err => {
return Promise.reject(new Error(err));
});
}
function b() {
console.log("B Started");
//return Promise.reject(new Error("Aborted from B function"));
return Promise.resolve("Done With B");
}
function a() {
console.log("A started");
return b().then(function(resultb){
console.log("B result:"+resultb);
return c();
}).catch(function(err){
console.log("Error:"+err)
}).then(function(resultc){
console.log("C result:"+resultc)
}).catch(function(err){
console.log("Error:"+err);
});
}
a();
相关文章:
- 简单的ES6承诺问题-交换解决和拒绝参数
- 在ES6 Promise中,我应该在解决/拒绝之前使用return吗
- 在jQuery中,.state()如何确定一个承诺是挂起的、已解决的还是被拒绝的
- 角度$q.拒绝不解决
- 在$http内解决/拒绝承诺是行不通的
- 拒绝并解决Q承诺
- 关于承诺/A+规范,是一个从未被允许解决或拒绝的承诺
- AngularJS/Karma-测试函数返回已解决或拒绝的promise
- 承诺-链接解决/拒绝
- 承诺不期望得到解决或拒绝
- 在自定义的Jasmine匹配器中解决和拒绝承诺
- 承诺API回调-如何正确解决或拒绝
- new Promise和Promise的区别.在bluebird中解决/拒绝
- 如何知道什么时候所有的承诺都被拒绝了,或者用基本的js承诺解决了
- 你是否应该在承诺中解决或拒绝后退货
- 我是否需要在早期解决/拒绝后返回?
- 麻烦的错误,未能拒绝与蓝鸟.解决得很好.错误似乎会使应用程序崩溃
- 问美元.当有一个被拒绝的承诺时,一切都解决了
- JavaScript承诺在未被拒绝或解决时是否会造成内存泄漏?
- 在外部回调中解决/拒绝承诺