私はこのようなコードを持っています
function hello(){
setTimeout(() => console.log("after 3sec"), 3000);
}
let x = Promise.resolve()
x.then(() => {
hello()
}).then(() => console.log("after 1st then"))
今、出力は奇妙です、2番目の関数のconsole.logは、1番目のconsole.logの前に実行されています..それを同期させる方法、つまり、2番目の
.then
と言うことができます最初の
.then
の後にのみ実行する必要があります
関連した質問
- Javascriptajax配列の値だけを表示する方法
- ASPNETRazorを使用したAjaxPOST
- json文字列からマップを作成するとTypeErrorが発生します:JSONparse(…)は反復可能ではありません
- 複数のタグをクリックしたときに複数のgetxmlhttprequestsを開く方法はありますか?
- 状態Reactjsの属性を変更しています
- ES6矢印関数での「()」と「_」の使用の違い
- Reactの三項演算子に基づくデータの表示
- Arraymap()で以前の親の値にアクセスします
- HTMLエンティティをエスケープし、URLを動的にレンダリングする
- JavaScript:このAPIデータからリストを表示する方法
setTimeout
それ自体はPromiseを返しません-コールバックベースです。 Promiseチェーンでコールバックベースの関数を使用する場合は、明示的にPromiseに変換する必要があります。新しい質問については、
hello
を作成する必要があります Promiseを返し、次にhello
を返します 呼び出して、連鎖できるようにします。