Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

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

  1. JavaScriptコールバック

    JavaScriptでは、関数はオブジェクトであるため、パラメーターとして別の関数に渡すことができます。これらの関数は別の関数内で呼び出すことができ、渡された関数はコールバック関数と呼ばれます。 以下はJavaScriptコールバックのコードです- 例 <!DOCTYPE html> <html> <head> <style>    body {       font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-seri

  2. 'onclick' JavaScriptを使用するときに2つ以上の関数を実行するにはどうすればよいですか?

    最初にボタンを設定しましょう- <button type="submit" onclick="callTwoOtherFunctions()"> Call </button> 上記では、「onclick」の下に関数を設定して、他の2つの関数を呼び出しています- function callTwoOtherFunctions(){    fun1();    fun2(); } このようにして、以下の完全なコードのようにfun1()とfun2()を回避します- 例 <!DOCTYP