在ES6 Promise中,我应该在解决/拒绝之前使用return吗

Should I use return before resolve / reject in ES6 Promise?

本文关键字:return 拒绝 Promise ES6 我应该 解决      更新时间:2023-09-26

在为ES6 promise调用resolve/reject时使用return是否更正确?这对调用堆栈有帮助吗?

return new Promise((resolve, reject) => {           
this._mariadb.query(...,
    (err, rows) => {             
            if (err) {return reject(err);}                
            if (rows.info.numRows > 0) {return resolve(true);}        
            return resolve(false);                
        });            
    });

不使用返回值,但它可以快速提前退出函数。仅此而已。你上面的代码可以用完全相同的方式编写,而不会返回

if (err)
  reject(err);
else if (rows.info.numRows > 0)
  resolve(true);
else
  resolve(false);

或者更好的

if (err)
  reject(err);
else
  resolve(rows.info.numRows > 0);

return reject(err)只是一种更简洁(但也更令人困惑)的说法reject(err); returnPromise("executor")的参数不应该返回任何有意义的内容,所以不,不管您是否使用return

不,你不应该这样做,因为一旦承诺被解决/拒绝,它就永远不会改变状态