NodeJS Promoise 机制最简单介绍

NodeJS的Promise机制是为了解决JS执行过程中的异步问题,或者说,有时候我们希望程序代码是顺序执行的。

先来看看下面这段代码的执行结果:

var fs=require("fs");

var res = fs.readFile("C:/foo.txt",function(error,data){
      console.log(data.toString())
});

console.log("end");

按照通常的理解,应该先打印出foo.txt文件中的内容,但实际的执行结果是先打印出了end字符串。这是因为JS代码的执行是异步的,但执行到读取文件这段代码时需要一些事件,于是并没有等待执行完毕就执行了下面的代码,因此打印出了end字符串。

如果我们想实现读完文件再执行打印end字符串的操作,就需要使用到Promise机制。看下面的代码:

function readFile_promise(path) {
    return new Promise(function (resolve, reject) {
        fs.readFile(path, "UTF-8", function (error, data) {
            if (data) {
                resolve(data);
            } else {
                reject(error);
            }
        });
    });
}

var promise=readFile_promise("C:/foo.txt");

promise.then(function(data){
    console.log(data);
}).then(function(){
    console.log("end");
}).then(function(){
    console.log("final");
});

我们声明了一个Promise函数,它有两个参数resolve代表执行成功,reject代表执行失败。调用的时候使用then方法,这样我们就实现了先读取文件再执行后续的打印操作(通过一个个then方法来拼接),进而达到了我们希望的串行调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值