本文主要是介绍js代码中关于async await的滥用 async await的滥用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概念:
返回值: async返回一个promise---这个返回值是默认自发行为
async function name1(params) {console.log(params)
}
let result = name1('lion')
console.log(result) // Promise { undefined }
result.then(res => console.log(res)) // undefined
正题
很多时候不知道该不该加async,导致async,await满天飞
demo:
function timeout(ms) {return new Promise((resolve, reject) => {setTimeout(resolve, ms, 'done');});
}
async function timeout2() {let res = await timeout(3000)console.log('done: 3000')
}
async function timeout3() {let res = await timeout(2000)console.log('done: 2000')
}
现在有个函数想要执行timeout2、timeout3,期待打印顺序肯定是: 'done: 3000' ;'done: 2000'
1、方式:timeout2、timeout3已经是async ,awiat 那么handleTimeout这么写行不行?
function handleTimeout() {timeout2()timeout3()
}
handleTimeout()
// done: 2000
// done: 3000
2、方式:name2 name3已经是async ,awiat 那么handleTimeout这么写行不行?
async function handleTimeout() {timeout2()timeout3()
}
handleTimeout()
// done: 2000
// done: 3000
3、正确的
async function handleTimeout() {await timeout2()await timeout3()
}
handleTimeout()
// done: 3000
// done: 2000
思想: 只看单个方法,别看那么宏观。
解析: 在async函数中,可能会有N个异步处理(promise),我们都用await进行控制时序,当前面的一系列的异步执行完毕后,最终return是一个promise(无论你是否真的在code中return一个promise)
这篇关于js代码中关于async await的滥用 async await的滥用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!