JacksonTian/diveintonode_examples

序列执行的Promise

stonewen opened this issue · 0 comments

代码示例中有如下这段代码:

var readFile1 = function (file, encoding) {
    var deferred = new Deferred();
    fs.readFile(file, encoding, deferred.callback());
    return deferred.promise;
  };
  var readFile2 = function (file, encoding) {
    var deferred = new Deferred();
    fs.readFile(file, encoding, deferred.callback());
    return deferred.promise;
  };

  readFile1('file1.txt', 'utf8').then(function (file1) {
    return readFile2(file1.trim(), 'utf8');
  }).then(function (file2) {
    // file2 => 2
    console.log(file2);
  }); 

为何不写成这种

var readFile = function (file, encoding) {
    var deferred = new Deferred();
    fs.readFile(file, encoding, deferred.callback());
    return deferred.promise;
  };

  readFile('file1.txt', 'utf8').then(function (file1) {
    return readFile(file1.trim(), 'utf8');
  }).then(function (file2) {
    // file2 => 2
    console.log(file2);
  });

测试没有问题