es6的promise

106 阅读1分钟

promise 是一个对象,对象和函数的区别是对象可以保存状态,函数不可以。

promise的用法: promise是一个对象,因此我们使用一个new的方式新建一个,然后给他传一个函数作为参数,这个函数呢,也有两个参数,一个是resolve,一个叫reject,那这两个参数也是函数,紧接着,我们使用then来调用这个promise.

async function async1() {

console.log('async1 start');
await async2();//异步任务同步写法 awaith后面的代码会加入到微任务列表里
console.log('async1 end');

}

async function async2() {

console.log('async2');

}

console.log('script start');

setTimeout(function() {

//setTimeout宏任务需要等script队列中的任务执行完在执行

console.log('setTimeout');

}, 0)//最后执行

async1();

new Promise(function(resolve) {

console.log('promise1'); //同步任务
resolve();

}).then(function() {

console.log('promise2'); // 微任务

});

console.log('script end'); //同步任务

script start

async1 start

async2

promise1

script end

async1 end

promise2

setTimeout

回调并不都是异步处理,回调可以同步回调,也可以异步回调

const promise = new Promise((resolve, reject) => {

console.log(1)

resolve()

console.log(2)

}) promise.then(() => {

console.log(3)

})

console.log(4)

打印结果:1,2,4,3

解释:Promise 构造函数是同步执行的,promise.then 中的函数是异步执行的。