私はJavaScriptに新しく、私は最初の非同期の待ち時間を実行しようとしました、そして私の問題がどこにあるのかを理解することができません。
getName() - 1秒後に約束を返すべきです。 f()] - getNameが終了してから印刷された名前を待つ必要があります。
何が行方不明ですか?
const getName = async () => {
setTimeout(() => 'xxx', 1000)
};
const f = async () => {
name = await getName()
console.log(name)
}
f()
_
await
を使用しない限り、getName
getName
asyncを持つ必要はありません。Promise
を返す必要があります。 await
は約束で動作します。
const getName = () =>
new Promise(resolve => setTimeout(resolve, 1000, 'xxx'));
async f() {
let name = await getName();
console.log(name);
}
f();
_
関数を待つために、その関数は約束を返す必要があります。
したがって、新しい約束を作成する必要があります。 resolve
、reject
の2つの方法があります。
resolve
変数を返し、成功して使用されます。 promise.then(value => )
またはawait
を使用して、戻り値をキャッチできます。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()
_