ES10 的 await 可以用在不是 async 函数中吗?
在 ES10 中,我们可以使用 async/await 来处理异步代码,它使得异步代码看起来更像同步代码,让我们的代码更加简洁易懂。但是,有没有想过,我们是否只能在 async 函数中使用 await 呢?答案是不一定。
在 ES10 中,我们可以在任何返回 Promise 的函数中使用 await 关键字。这意味着我们可以在非 async 函数中使用 await,只要这个函数返回的是一个 Promise 对象。
下面是一个简单的示例代码,展示了如何在一个非 async 函数中使用 await:
// javascriptcn.com 代码示例 function fetchUserData() { return new Promise((resolve, reject) => { setTimeout(() => { resolve({ name: 'John', age: 30 }); }, 1000); }); } function displayUserData() { const userData = await fetchUserData(); console.log(userData); } displayUserData();
在上面的示例代码中,fetchUserData 函数返回了一个 Promise 对象,而 displayUserData 函数中使用了 await 来等待 Promise 的结果。尽管 displayUserData 不是一个 async 函数,但它仍然可以使用 await。
需要注意的是,如果我们在一个非 async 函数中使用 await,我们需要确保这个函数返回的是一个 Promise 对象。否则,我们将会得到一个 SyntaxError。
总结
ES10 的 await 可以用在不是 async 函数中,只要这个函数返回的是一个 Promise 对象。这使得我们可以更加灵活地处理异步代码,使代码更加简洁易懂。但是,在使用时需要注意函数返回值类型,以避免出现 SyntaxError 等错误。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65853661d2f5e1655dfe1ef9