你是否应该在承诺中解决或拒绝后退货

Should you return something after resolving or rejecting in a Promise?

本文关键字:拒绝 解决 是否 承诺      更新时间:2023-09-26

假设我有一个类似以下的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的例子通常都非常简单。

如果我真的归还了这些东西,我应该归还什么?truefalse?还是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();