所谓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
构造函数接受一个函数作为参数,该函数的两个参数分别是resolve
和reject
。它们是两个函数,由 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
时间: 2024-11-10 07:37:39