在 async/await 中包装承诺
Wrapping promise in async/await
我在 async/await 和从 Promise 返回值方面遇到了一些困难。
function test () {
return new Promise((resolve, reject) => {
resolve('Hello')
})
}
async function c() {
await test()
}
据我了解,我应该能够通过以下方式获得价值:
console.log(c())
但显然我在这里遗漏了一点,因为这是 returns 一个承诺。它不应该打印 "hello" 吗?同样,我不清楚在将回调包装在 async/await?
之前是否需要将其转换为承诺
I am missing a point here as this returns a promise. Shouldn't console.log(c())
print "hello"?
不,async
功能总是 return 承诺。它们并不是神奇地同步 运行 异步代码 - 相反,它们将看起来同步的代码(尽管散布着 await
关键字)变成异步 运行 代码。
在异步函数中可以得到结果值:
async function c() {
const result = await test()
console.log(result);
return 'World';
}
c().then(console.log);
I am unclear as to whether a callback needs to be converted to a promise before wrapping it in async/await?
是的,你可以 await
只承诺。请参阅 How do I convert an existing callback API to promises? 了解如何进行转换。
Async functions return a Promise. If the function throws an error, the
Promise will be rejected. If the function returns a value, the Promise
will be resolved.
我在 async/await 和从 Promise 返回值方面遇到了一些困难。
function test () {
return new Promise((resolve, reject) => {
resolve('Hello')
})
}
async function c() {
await test()
}
据我了解,我应该能够通过以下方式获得价值:
console.log(c())
但显然我在这里遗漏了一点,因为这是 returns 一个承诺。它不应该打印 "hello" 吗?同样,我不清楚在将回调包装在 async/await?
之前是否需要将其转换为承诺I am missing a point here as this returns a promise. Shouldn't
console.log(c())
print "hello"?
不,async
功能总是 return 承诺。它们并不是神奇地同步 运行 异步代码 - 相反,它们将看起来同步的代码(尽管散布着 await
关键字)变成异步 运行 代码。
在异步函数中可以得到结果值:
async function c() {
const result = await test()
console.log(result);
return 'World';
}
c().then(console.log);
I am unclear as to whether a callback needs to be converted to a promise before wrapping it in async/await?
是的,你可以 await
只承诺。请参阅 How do I convert an existing callback API to promises? 了解如何进行转换。
Async functions return a Promise. If the function throws an error, the Promise will be rejected. If the function returns a value, the Promise will be resolved.