2016-01-26 119 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,但是當回調函數返回一個普通的值時,它只會採用它。