参考链接
await必须写在async的作用域内
const p = () => {
return new Promise((open, reject) => {
setTimeout(() => {
var value=200
open(value)//传递结果
}, 2000);
});
};
const Async = async () => {
try {
const t = await p();//await必须写在async里面
console.log(t);
} catch (err) {
console.log(err);
}
};
Async();
- promise函数里是reject,那就会在catch里面执行代码;
- promise函数里是open,会执行try里面的代码
- await后面等待的是一个结果,需要包含在async函数内,promise对象||return value||function函数
一般是在async里return返回值,如果没有返回值,它会返回Promise.resolve(undefined),但也不会阻塞后面的语句执行;并且通过try{}catch{}来解决promise.reject()报错的问题。 - async函数是返回的是一个promise对象,如Async就是一个promise对象,可以调用执行
总结:
- es6的promise是
var p=new Promise((o,c)=>{o(...)|c(...)})
- 为o时执行then,p().then((...)=>{})
- 为c时执行catch,p().cathc(()=>{})
- es7升级版promise 是
var p=new Promise((o,c)=>{o(...)|c(...)})+async()=>{try{const t=await p()}catch(err){}}
- 在
async里面调用p等p执行完返回 值 - 执行t后面的语句