为什么使用async/await,它使代码像同步一样工作
Why use async/await, it makes code work like sync
如果你使用 promise 的 then()
语法,你可以真正地 运行 并发编码。
看这个例子。
async function asyncFunc() {
return '2';
}
console.log('1')
asyncFunc().then(result => console.log(result))
console.log('3')
这会打印 1
-> 3
-> 2
因为 asyncFunction()
运行s 在“异步”和其余代码中('3'
) 运行s 没有延迟。
但是如果你使用 async
/await
语法,它是不是像普通的“同步”代码一样工作?
async function asyncFunc() {
return '2';
}
console.log('1')
const result = await asyncFunc()
console.log(result)
console.log('3')
这将打印 1
->2
->3
因为它“延迟”其余代码以“等待”asyncFunction()
所以我很好奇 async
/await
语法的用途。我想它允许你使用像同步函数这样的异步函数。使用 async
/await
,我可以很容易地看到我的代码 运行 是如何工作的,因为它与普通同步代码具有相同的流程。但是,为什么不首先使用同步代码呢?
但我确定我在这里遗漏了什么,对吧? async
/await
语法的目的是什么?
async/await
的思路如下:
它是 promise 的语法糖。它允许以同步顺序使用异步代码(如 Web Api 的 - AJAX、DOM api 等)。
你问“但是,为什么不首先使用同步代码呢?” - 因为在你的例子中你强制在承诺中返回一个同步代码,基本上你让它异步,但它可以 运行 首先作为同步,但是上面提到的 Web API 只能工作ASYNC(意味着你必须等待它们被执行),这就是为什么你不能“首先”将它们同步 :)
当JavaScript遇到await表达式时,会暂停async函数的执行,等待promise完成(promise成功解决)或rejected(发生错误),然后继续执行where它在该函数中暂停...承诺可以是来自 JS 引擎的代码(如您的情况),也可以来自其他地方,例如浏览器 apis(真正的异步)。
如果你使用 promise 的 then()
语法,你可以真正地 运行 并发编码。
看这个例子。
async function asyncFunc() {
return '2';
}
console.log('1')
asyncFunc().then(result => console.log(result))
console.log('3')
这会打印 1
-> 3
-> 2
因为 asyncFunction()
运行s 在“异步”和其余代码中('3'
) 运行s 没有延迟。
但是如果你使用 async
/await
语法,它是不是像普通的“同步”代码一样工作?
async function asyncFunc() {
return '2';
}
console.log('1')
const result = await asyncFunc()
console.log(result)
console.log('3')
这将打印 1
->2
->3
因为它“延迟”其余代码以“等待”asyncFunction()
所以我很好奇 async
/await
语法的用途。我想它允许你使用像同步函数这样的异步函数。使用 async
/await
,我可以很容易地看到我的代码 运行 是如何工作的,因为它与普通同步代码具有相同的流程。但是,为什么不首先使用同步代码呢?
但我确定我在这里遗漏了什么,对吧? async
/await
语法的目的是什么?
async/await
的思路如下:
它是 promise 的语法糖。它允许以同步顺序使用异步代码(如 Web Api 的 - AJAX、DOM api 等)。
你问“但是,为什么不首先使用同步代码呢?” - 因为在你的例子中你强制在承诺中返回一个同步代码,基本上你让它异步,但它可以 运行 首先作为同步,但是上面提到的 Web API 只能工作ASYNC(意味着你必须等待它们被执行),这就是为什么你不能“首先”将它们同步 :)
当JavaScript遇到await表达式时,会暂停async函数的执行,等待promise完成(promise成功解决)或rejected(发生错误),然后继续执行where它在该函数中暂停...承诺可以是来自 JS 引擎的代码(如您的情况),也可以来自其他地方,例如浏览器 apis(真正的异步)。