码迷,mamicode.com
首页 > 其他好文 > 详细

Promise(3) 方法

时间:2017-06-13 10:16:53      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:stp   出错   class   后台   style   com   回调函数   strong   bsp   

人没有梦想,跟咸鱼又有什么两样了?一直恐惧读源码,哪怕是一个简单的库也是读百来行遇到难点就放弃了。对于新的东西也仅仅是知道它拿来干什么,社区资源在哪里,要用时就突击文档资源使用即可。未有过深入之心,亦或者有过深入之心两三天就废掉。

这两日安静下来思考,觉得自己毛病不少,却还是不甘于平庸。那么只能选择面对自己做出改变,越是恐惧,越是应该面对。下一篇就来个es6-promise代码理解好了。加油吧少年!

 3. Promise 静态方法

Promise.reject()静态方法,这个方法我在才开始用的时候老迷惑了,不知道什么时候应该使用。直到我理解了then方法过后,就不迷惑了,接上一篇。看下图代码:

var aPromise = new Promise(function() {
    resolve(1)
});
var testPromise = aPromise.then(function onFulfilled() {
    //...一系列操作过后得到要传递的value 值
    return value
})

//或者

var aPromise = new Promise(function() {
    reject(1)
});
var testPromise = aPromise.then(null, onRejected() {
    //...一系列操作过后得到要传递的reason 值
    return reason
})

Promise.prototype.then执行它会返回一个新的promise对象,而这个新的promise对象的状态值规则如下:

①var aPromise = new Promise(function(){ resolve(1)}); var testPromise = aPromise.then(null,null)//没有回调函数,新创建的testPromise 对象的[[PromiseStatus]]和[[PromiseValue]]与之前的aPromise 的一样。

②then方法执行的回调函数执行return 值只为普通对象或者原始类型,即将值赋给新创建的promise对象[[PromiseValue]],新创建的promise对象的[[PromiseStatus]]就等于调用then的那个promise对象的[[PromiseStatus]]。

③then方法执行的回调函数执行return值为promise对象,即将promise对象的[[PromiseValue]]和[[PromiseStatus]]赋值给新创建的promise对象对应属性值。

④then方法执行的回调函数执行return值为thenable对象,即执行对象的then方法,根据then方法内部执行resolve或reject确定[[PromiseValue]]和[[PromiseStatus]],赋值给新创建的promise对象对应属性值。

then函数最后调用了onRejected 或者 onFulfilled返回的promise对象需要把rejected状态传递下去(传递给后续进行处理)此时需要使用Promise.reject。(举个例子

// Request.get()是一个发起请求,当有数据返回时生成一个promise对象
// res为后台成功返回的数据,msg为失败或错误返回的数据
Request.get(url).then((res) => {
    if (res.code == 0) {
        //当code的值为0 时判定这个是成功的需要处理的数据
        return res;
    } else {
        //当code的值不为0时,就需要返回一个rejected的promise对象供后续处理
        return Promise.reject(handleError(res));
    }
}, (msg) => {
    //通常是请求出错需要返回一个rejected的promise对象,供后续处理
    return Promise.reject(msg);
});

 

Promise(3) 方法

标签:stp   出错   class   后台   style   com   回调函数   strong   bsp   

原文地址:http://www.cnblogs.com/luoxiaoer/p/6939011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!