美文网首页编程学习笔记
【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