2つの非同期関数が完了した後に関数を実行する方法-JavaScript
2つの要素の配列があり、その両方の要素が2つの非同期関数であるとします。両方の非同期関数の実行が完了したら、(この質問の目的で)コンソールに何かを印刷するなどの作業を行う必要があります。
この課題にどのように取り組むことができますか?
非同期タスクの完了時にタスクを実行するには、基本的に2つの方法があります-
- プロミスの使用
- 非同期/待機関数の使用
ただし、コードに多くの(複数の)非同期関数の処理が含まれている場合、前者のPromise.all関数は後者よりも優れています。
例
以下はコードです-
const arr = [ new Promise((resolve, reject) => { setTimeout(() => { resolve('func1 fired!'); }, 2000); }), new Promise((resolve, reject) => { setTimeout(() => { resolve('func2 fired'); }, 3000); }) ]; const lastFunction = () => { console.log('this function should be fired at the very last'); }; Promise.all([arr[0], arr[1]]).then((resp) => { console.log(resp); lastFunction(); }).catch((err) => { console.log('something unexpected happened'); })
出力
これにより、コンソールに次の出力が生成されます-
[ 'func1 fired!', 'func2 fired' ] this function should be fired at the very last
-
JavaScriptコールバック
JavaScriptでは、関数はオブジェクトであるため、パラメーターとして別の関数に渡すことができます。これらの関数は別の関数内で呼び出すことができ、渡された関数はコールバック関数と呼ばれます。 以下はJavaScriptコールバックのコードです- 例 <!DOCTYPE html> <html> <head> <style> body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-seri
-
'onclick' JavaScriptを使用するときに2つ以上の関数を実行するにはどうすればよいですか?
最初にボタンを設定しましょう- <button type="submit" onclick="callTwoOtherFunctions()"> Call </button> 上記では、「onclick」の下に関数を設定して、他の2つの関数を呼び出しています- function callTwoOtherFunctions(){ fun1(); fun2(); } このようにして、以下の完全なコードのようにfun1()とfun2()を回避します- 例 <!DOCTYP