NodeJS Promoise 机制最简单介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yahoo169/article/details/79945180

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方法来拼接),进而达到了我们希望的串行调用。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页