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 中的函数是异步执行的。