es6学习--promise对象

Posted 风起了--

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6学习--promise对象相关的知识,希望对你有一定的参考价值。

     所谓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对象的主要内容,如果未能解决你的问题,请参考以下文章

es6学习笔记--promise对象

ES6学习笔记--promise对象

ES6 学习 -- Promise对象

es6学习--promise对象

ES6深入学习记录promise对象相关

ES6的promise的学习