美文网首页
js中then()函数详解

js中then()函数详解

作者: Marco_Deng | 来源:发表于2016-09-12 11:54 被阅读2854次

then: function (callback, errback) {
var result = defer();

      var wrappedCallback = function(value) {  
        try {  
          result.resolve((callback || defaultCallback)(value));  
        } catch(e) {  
          exceptionHandler(e);  
          result.reject(e);  
        }  
      };  

      var wrappedErrback = function(reason) {  
        try {  
          result.resolve((errback || defaultErrback)(reason));  
        } catch(e) {  
          exceptionHandler(e);  
          result.reject(e);  
        }  
      };  

      if (pending) {  
        pending.push([wrappedCallback, wrappedErrback]);  
      } else {  
        value.then(wrappedCallback, wrappedErrback);  
      }  

      return result.promise;  
    }   

always: function (callback) {  
        
      function makePromise(value, resolved) {  
        var result = defer();  
        if (resolved) {  
          result.resolve(value);  
        } else {  
          result.reject(value);  
        }  
        return result.promise;  
      }  
        
      function handleCallback(value, isResolved) {  
        var callbackOutput = null;              
        try {  
          callbackOutput = (callback ||defaultCallback)();  
        } catch(e) {  
          return makePromise(e, false);  
        }              
        if (callbackOutput && callbackOutput.then) {  
          return callbackOutput.then(function() {  
            return makePromise(value, isResolved);  
          }, function(error) {  
            return makePromise(error, false);  
          });  
        } else {  
          return makePromise(value, isResolved);  
        }  
      }  
        
      return this.then(function(value) {  
        return handleCallback(value, true);  
      }, function(error) {  
        return handleCallback(error, false);  
      });  
    }   

有两个部分,then 和 always,两个都是可执行的方法。
always 这里不作讨论。来看看then ,它有两个参数,callback 和 errback, 第一个用来处理“resolved”和“success”事件;第二个用来处理“rejected”和“failure”事件。
所以,delay.promise不是现成的数据,还不能直接使用。然后来看看这个then怎么使用(主要是如何从中提取出我们需要的后台返回的数据):

相关文章

  • js中then()函数详解

    then: function (callback, errback) {var result = defer();...

  • JavaScript的事件机制详解

    【js事件详解】js事件封装函数,js跨浏览器事件处理机制 一、事件流 事件流描述的是从页面中接受事件的顺序。IE...

  • 2019-03-19 WKWebView的特性介绍

    【参考文章】UIWebView、WKWebView使用详解及性能分析 WKWebView在执行OC调用JS函数时,...

  • 原型、原型链及构造函数详解

    本文主要对JS中的object和function这两种数据类型的基础上对原型原型链及构造函数做一个详解。 构造函数...

  • JS写事件代理

    js中的事件委托或是事件代理详解

  • 箭头函数中this

    箭头函数中this 建议先阅读本人对于es5中this的详解 es5中的this详解 箭头函数本身是没有thi...

  • javascript 函数详解

    很多小伙伴对函数一头雾水,什么构造函数,匿名函数,回调函数.........到底说的是什么?今天给大家详解一下js...

  • 详解 JS 中 new 调用函数原理

    JavaScript 中经常使用构造函数创建对象(通过 new 操作符调用一个函数),那在使用 new 调用一个函...

  • this

    this在js中主要研究的是函数中的this,不代表函数外没有this,函数外的this指向window js中的...

  • C/C++的30个冷知识

    数据格式详解 输入输出函数详解 字符串处理函数详解 内存函数详解 类详解 数据格式详解 2^8=256(同样是一个...

网友评论

      本文标题:js中then()函数详解

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