Htp*_*Rad 9 node.js async-await
我是 javascript 新手,我试图实现我的第一个异步等待,但无法弄清楚我的问题出在哪里。
getName() - 应该在 1 秒后返回一个承诺。f() - 应该等待 getName 完成然后打印名称
我错过了什么?
const getName = async () => {
setTimeout(() => 'xxx', 1000)
};
const f = async () => {
name = await getName()
console.log(name)
}
f()
Run Code Online (Sandbox Code Playgroud)
除非你await也在 inside 中使用getName,否则你不需要getName异步,你只需要返回一个Promise; 因为await与承诺一起工作:
const getName = () =>
new Promise(resolve => setTimeout(resolve, 1000, 'xxx'));
async f() {
let name = await getName();
console.log(name);
}
f();
Run Code Online (Sandbox Code Playgroud)
要等待一个函数,该函数必须返回一个承诺。
因此,您需要创建一个新的承诺。它将有 2 个方法:resolve、 和reject。
resolve返回变量,并在成功时使用。promise.then(value => )您可以通过使用或awaiting捕获它的返回值。reject抛出错误,并在错误时使用。promise.catch(err => )您可以通过使用或等待异步函数并将其包装在 try-catch 块中来捕获错误。您的代码应如下所示:
const getName = async () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('xxx');
}, 1000)
})
};
const f = async () => {
name = await getName()
console.log(name)
}
f()Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7675 次 |
| 最近记录: |