2016-09-23 31 views
0

這裏是我的測試代碼來測試在promise構造函數中嵌入的另一個回調中調用resolve回調函數。節點爲什麼會打印Promise {<pending>}?我可以關閉它嗎?

var p = new Promise(function (resolve) { 
    setTimeout(function() { 
     resolve('starbar'); 
    }, 3000); 
}); 

console.log(p.then(function (v) { 
    console.log(v); 
})); 

在Node中運行代碼時,它記錄了Promise { <pending> }。 爲什麼會發生這種情況,以及如何關閉它?

+0

只需卸下外'的console.log()'?目前還不清楚你想達到什麼以及爲什麼你對輸出不滿意。 – Bergi

+0

是的,我在外面包裝無用的console.log時犯了一個錯誤。在我刪除了外部console.log()之後,事情進展順利。外部'console.log()'記錄承諾對象的直接狀態嗎? – krave

+0

是的,它立即記錄了'然後'返回 - 一個尚未解決的承諾。 – Bergi

回答

1

這就是當你記錄整個承諾時發生的情況,這就是你在這裏做的。

你不必把它關掉,只是停止記錄的承諾

var p = new Promise(function (resolve) { 
    setTimeout(function() { 
     resolve('starbar'); 
    }, 3000); 
}); 

p.then(function (v) { 
    console.log(v); 
}); 
+0

哦!好的我知道了。我的錯。謝謝! – krave

相關問題