nodejs里的异步编程

在编程中异步api

  1. 指的有像对文件的操作
  2. 像是触发的事件等

js引擎中执行的一些普通语句for语句 ,var语句,普通函数的调用啊,它们是首先执行完。才会执行像readFile()这些异步api。它们具有等待的特点。

暴露出异步api执行的结果

1.在这些异步api外面再套一层promise函数,将里面readFile()执行的结果,作为参数传递出去


let promise = new Promise((resolve,reject)=>{
    fs.readFile('./demo.txt','utf8',(err,result)=>{
        if(err!=null){
            reject(err);

        }else{
            resolve(result);
        }
    });
});
promise.then((result)=>{
    console.log(result);
}).catch((res)=>{
    console.log(res);
})

异步函数

  1. 异步函数在函数外加async关键字
    2.异步函数里的关键字await,使异步api同步化,它操作的对象得是promise对象
    const fs = require('fs');
//获取一个能将异步api的返回值转化为promise对象
let promisify = require('util').promisify;
//使用将readfile这个异步api的返回值转化为promise对象
let readFile = promisify(fs.readFile);
async function run(){
    //await直到将文件全部转化为promise后暂停,以达到顺序执行文件的作用
    //1.await关键字只能出现在异步函数中
    //2.await 后面只能是promise对象
    //3.它能暂停异步函数的执行,直到promise对象结果返回
        let a1  = await readFile('./demo.txt','utf8');
        let a2 = await readFile('./demo2.txt','utf8');
        let a3 = await readFile('./demo3.txt','utf8');
        //顺序输出的demo,demo2,demo3的文件内容
        console.log(a1);
        console.log(a2);
        console.log(a3);
}
run();

你可能感兴趣的:(js,nodejs,js,javascript)