promise基本用法
let p = new Promise(res=>{})
p.then()
Promise.all()
Promise.race();
Promise.resolve();
Promise.any()
promise总结
promise中那个程序是异步?那个是同步
- 1new Promise的回调函数方法体中随着new Promise同步执行,
- 注意:一般在方法体中编写异步代码;例如 ajax setTimeout
- 2:then 中回调函数是异步执行的
问题:then的回参赋值是什么 - 第一步看:是哪一个promise 触发then
- 第一步判断 promise是怎么创建的
- 1 如果是 new Promise 那么就是 resolve 实参
- 2 如果是 then 返回的 那么就是 then 的return
- 3 如果是 async函数执行 那么就是 async 返回的
- 4 如果是 all 那么就是数组 所有promise集合中 resolve
- 5 如果是 race 那么就是第一个状态改变并且为成功状态的promise中resolve
- 6 如果是 Promise.resolve 那么就是 resolve实参
async&await基本用法
let p1 = function () {
return new Promise((resolve, reject) => {
setTimeout(function () {
console.log('p1');
resolve('p1xxxxx');// resolve 输出异步结束的 成功结果
}, 1000)
})
}
let p2 = function () {
return new Promise((resolve, reject) => {
setTimeout(function () {
console.log('p2');
resolve('p2xxxxxxxx');
}, 2000)
})
}
// 应用:异步问题同步化
async function asy1(){
// 1:异步问题,同步化
let res = await p2();
console.log(res);
// 等上一个 await 执行完毕后 在执行下面的await
let res1 = await p1();
console.log(res1);
// await 返回值;就是异步执行结束,输出的结果。
return 1
}
// async 函数执行返回值
// async 中return
// await 的特点
// async 中 this
async&await 总结
- 1 async 函数执行 返回值为 promise实例
- 2 整体都是异步程序
- 3 await 后面必须是promise,只能在async函数内部编写
问题:async中return的作用?
- 1:返回到async函数执行后,触发的then的回参中。
- 2: 在 await后执行async函数;那么return返回值 作为await返回值输出
问题:如何判断await返回值是什么?
- 第一步看 await 后面的promise实例
- 不是:报错
- 第二步看 await 后面的 promise 是如何创建的
- 1 如果是 async 函数执行 那么就是 该函数中return
- 2 如何是 new Promise 那么就是 resolve实参
- 2 如何是 then 那么就是then 回调函数中 return
async await 很好解决异步问题同步化
在多个await中,需要等 上一个await 执行结束后;在执行下一个await
上一个await执行结束的标志是什么
await 有返回值