Utilisation de l'attente asynchrone
自我记录
MDN : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/async_function
MDN : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference /Opérateurs/attendre
1. fonction asynchrone
La valeur de retour de la fonction est un objet de promesse.
Le résultat de l'objet de promesse est déterminé par la valeur de retour de l'exécution de la fonction asynchrone.
async function main() {
// 1.如果返回值 是一个非Promise类型的数据
// 返回的结果就是 一个成功的 Promise 对象 PromiseState状态 fulfilled
// 并且return 什么 PromiseResult 结果就是什么
// return 'abc'
// 2.如果返回值 是一个Promise类型的数据
// 返回的结果就是 Promise 结果的状态
// return new Promise((resolve, reject) => {
// // resolve('成功')
// reject('失败')
// })
// 3.如果抛出异常
// 状态就是一个失败的Promise对象 结果就是 抛出的结果
throw 'err'
}
let res = main()
console.log(res);
2.attendre l'expression
1. L'expression à droite de wait est généralement un objet de promesse, mais il peut également s'agir d'autres valeurs 2.
Si l'expression est un objet de promesse, wait renvoie la valeur d'une promesse réussie
3. Si l'expression est d'autres valeurs , cette valeur est directement utilisée comme valeur de retour de wait
async function main() {
let p = new Promise((resolve, reject) => {
resolve('成功')
})
// 1.右侧为promise的情况
let res = await p
console.log(res); // 打印 成功
// 2.右侧为其它类型的数据 一般很少见
let res2 = await 'abc'
console.log(res2); // 打印 abc
}
main()
3. Attention
wait doit être écrit dans la fonction async, mais il n'est pas nécessaire d'attendre dans la fonction async
. Si la promesse de wait échoue, une exception sera levée et devra être capturée et traitée via try...catch
async function main() {
let p = new Promise((resolve, reject) => {
reject('err')
})
try {
let res3 = await p
console.log(res3);
} catch(e) {
console.log(e); // 打印 err
} finally{
// 补充知识点 finally 无论成功失败都会执行
console.log('无论成功失败 我都会执行!');
}
}
main()