节点js中的promise的链接

时间:2016-01-26 16:35:14

标签: node.js asynchronous promise

我正在学习nodejs中的承诺。

以下是我的示例代码

var Q = require('q');

Q.when(null)
 .then(function () {
      return 'kung foo';
      })
 .then(function (val) {
       console.log(val); // kung foo
      //return Q.when('panda');
     return 'panda';
    })
 .then(function (val) {
   console.log(val); // panda
   // Nothing returned
  })
  .then(function (val) {
     console.log(val == undefined); // true
   });

在第二个“then”中,回调是否返回“返回Q.when('panda');”要么 “回归'熊猫';”输出相同(kung foo panda true)。

我想知道这两个陈述有什么不同。

1 个答案:

答案 0 :(得分:0)

一个语句返回一个值(字符串'panda'),另一个语句返回一个非常相同的值的承诺(使用字符串'panda'解析的承诺)。

默认情况下,then方法会在使用结果解析外部(链接)的promise之前等待从回调返回的promise,但是当回调返回一个普通值时,它只会采用该值。