async / awaitは非同期の問題を解決します

async / awaitは、ECMAScript7が非同期の問題を解決するために提案したソリューションで、ES6の約束よりも明確で使いやすいものです。

使用法:

  1. JavaScript async関数の前にキーワードを追加すると、この関数の戻り結果がPromiseオブジェクトになります。
  2. awaitは非同期関数に配置する必要があります
  3. awaitの後に関数を接続して、この関数の実行が完了するのを待ちます。この関数がPromiseを返す場合、実行を続ける前に、この関数で非同期結果の実行(resolve())が完了するのを待ちます。関数のコードは、非同期の結果があるかどうかに関係なく、実行後に戻ります。

例:async / awaitとpromiseを併用

const fs = require("fs");
const read = function(fileName){
    return new Promise((resolve,reject)=>{
        fs.readFile(fileName,(err,data)=>{
            if (err) {
                reject(err);
            } else{
                resolve(data);
            }
        });
    });
};
async function readByAsync(){
    let a1 = await read('1.txt');
    let a2 = await read('2.txt');
    let a3 = await read('3.txt');
    console.log(a1.toString());
    console.log(a2.toString());
    console.log(a3.toString());
}
readByAsync();

注: awaitステートメントの後のPromiseオブジェクトがreject状態になると、async関数全体が中断され、後続のプログラムは実行されなくなるため、try ... catchを介して処理する必要があります。

const fs = require("fs");
const read = function(fileName){
    return new Promise((resolve,reject)=>{
        fs.readFile(fileName,(err,data)=>{
            if (err) {
                reject(err);
            } else{
                resolve(data);
            }
        });
    });
};
async function readByAsync(){
    let a1;
    let a2;
    let a3;
    try{
        a1 = await read('1.txt');
        a2 = await read('2.txt');
        a3 = await read('3.txt');
    }catch(e){
        //TODO handle the exception
    }
    console.log(a1);
    console.log(a2);
    console.log(a3);
}
readByAsync();
公開された398元の記事 ウォンの賞賛182 ビュー370 000 +

おすすめ

転載: blog.csdn.net/yexudengzhidao/article/details/105465862