【问题标题】:Should I use return before resolve / reject in ES6 Promise? [duplicate]我应该在 ES6 Promise 中的 resolve/reject 之前使用 return 吗? [复制]
【发布时间】:2016-09-12 11:33:29
【问题描述】:

在为 ES6 承诺调用 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);                
        });            
    });

【问题讨论】:

    标签: javascript ecmascript-6 es6-promise


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      没有使用返回值,但它可以是提前退出函数的快捷方式。就这样。您上面的代码可以编写成完全相同的方式运行而无需返回

      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);
      

      【讨论】:

        【解决方案3】:

        return reject(err) 只是表达reject(err); return 的一种更简洁(但也更令人困惑)的方式。 Promise ("executor") 的参数不应该返回任何有意义的东西,所以不,你是否使用return 并不重要。

        【讨论】:

          猜你喜欢
          • 2019-09-15
          • 2016-04-12
          • 2019-01-20
          • 1970-01-01
          • 2019-04-07
          • 2015-11-15
          • 1970-01-01
          • 2012-11-01
          • 2018-01-16
          相关资源
          最近更新 更多