2016-01-26 150 views
0

我正在学习nodejs中的承诺。节点js中的承诺链接

下面是我的示例代码

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 
    }); 

在第二 “然后”,回调是否返回 “返回Q.when( '熊猫');” OR “return'panda';”输出是一样的(kung foo panda true)。

我想知道这两个声明有什么区别。

回答

0

一条语句返回一个值(字符串'panda'),另一条语句返回一个与该值完全相同的值(字符串'panda'已解决的承诺)。

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