美文网首页编程学习笔记
【promise-02】Promise较之回调的优势

【promise-02】Promise较之回调的优势

作者: 飞蝗tengda | 来源:发表于2018-12-14 22:39 被阅读0次

Promise 优势

  • 使用promise去做一个流程的控制,肯定比回调要舒服很多,不管从维护上来讲还是可读性来讲,都是Promise更优一点。
  • 信任问题

回调

假如有一个第三方的库,它有一个方法,我们传了一个方法,它做了一个异步的操作:一秒后调用我们的回调函数,因为某些原因被多调用了一次,也就是说我们不能保证,这个回调函数会如预期一样运行。这就是一个信任问题。

// 第三方的某个库
function method(cb) {
  // 未按所想的预期执行回调
  setTimeout(function() {
    // 讲道理应该是现在该调用回调了
    cb && cb();
    // 但是?? 好像这个库有bug啊 em... 被多调用了一次
    cb && cb();
  }, 1000);
}

promise

// promise一但被确定为成功或者失败 就不能再被更改

function method() {
  return new Promise(resolve => {
    setTimeout(function() {
      // 成功会调用resolve,之后再调用就不灵了
      resolve();
      resolve();
    }, 1000);
  });
}
  • 控制反转

//回调
function method(cb) {
  // 未按所想的预期执行回调
  setTimeout(function() {
    // 或者执行回调 但是添油加醋
    cb && cb.call({a: 1, b: 2});
  }, 1000);
}
//promise
function method(cb) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(); // 调用的resolve全为自己所写书写的流程 很大程度上改善了反转控制的问题
    }, 1000);
  });
}

相关文章

网友评论

    本文标题:【promise-02】Promise较之回调的优势

    本文链接:https://www.haomeiwen.com/subject/chwnhqtx.html