1、加入await
function asyncFn () {
return new Promise(function (resolve, reject) {
setTimeout(function () {
if (true) {
console.log('resolve console')
resolve('resolve return')
} else {
reject('reject return')
}
}, 2000)
})
}
var value1 = await asyncFn() //(=> console.log('resolve console') => 控制台:resolve console)
var value2 = await 'plain text'
console.log(value1) //( 控制台:plain text)
console.log(value2) //( 控制台:resolve return)
//value1 = 'plain text'
//value2 = 'resolve return'
//(题外:var value1 = await asyncFn()使函数执行,var value1 = asyncFn使value= ƒ,此时value为函数表达式,加()可以执行)
2、不加await
function asyncFn () {
return new Promise(function (resolve, reject) {
setTimeout(function () {
if (true) {
console.log('resolve console')
resolve('resolve return')
} else {
reject('reject return')
}
}, 2000)
})
}
var value1 = asyncFn() //进入函数,等待两秒
var value2 = 'plain text'
console.log(value2) //(控制台:plain text)
console.log(value1) //(控制台:Promise {<pending>},处于pending状态的promise)
console.log(value2) //(控制台:plain text)
//两秒后 (控制台:resolve console)
测试:
async function test(){
new Promise(function (resolve, reject) {
setTimeout(function () {
if (true) {
console.log('resolve console')
resolve('resolve return')
} else {
reject('reject return')
}
}, 2000)
console.log('end');
})};
async function test2(){
await test();
console.log('end2')
};
test2()
VM414:11 end
VM414:15 end2
Promise {<resolved>: undefined}
VM414:5 resolve console