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

es6学习--promise对象

时间:2017-08-30 14:12:46      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:结束   res   class   完成   set   style   消息   func   未来   

     所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。

  

  1.基本用法

    Promise对象是一个构造函数,用来生成Promise实例   

function timeout(ms){
    return new Promise((resolve,reject) =>{
        setTimeout(resolve, ms,‘done‘)
    })
}

timeout(100).then((value)=>{
    console.log(value);
})

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolvereject。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。

esolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 Pending 变为 Resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 Pending 变为 Rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

Promise实例生成以后,可以用then方法分别指定Resolved状态和Rejected状态的回调函数。

   

2.Promise 新建后就会立即执行。

let promise = new Promise((resolve,reject) => {
    console.log("1");
    resolve();  // 调用promise.then
})
promise.then(function(){
    console.log(‘3‘);
})

console.log("2");        

// 1 2 3

 

3.Promise.prototype.then()

  它的作用是为 Promise 实例添加状态改变时的回调函数。

then方法返回的是一个新的Promise实例(注意,不是原来那个Promise实例)。因此可以采用链式写法,即then方法后面再调用另一个then方法。

let promise = new Promise((resolve,reject) => {
    console.log("1");
    resolve();  // 调用promise.then
})
promise.then(function(){
    console.log(‘3‘);
}).then(() => {
    console.log("2");
}).then(() => {
    console.log("4");
})

// 1 3 2 4

 

es6学习--promise对象

标签:结束   res   class   完成   set   style   消息   func   未来   

原文地址:http://www.cnblogs.com/wjylca/p/7452686.html

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