2017-02-23 84 views
1

爲什麼Promise.then()中的代碼未被調用?當我試圖使用Promise.promisify()提交一個函數時,我發現我在Promise.then()中編寫的代碼不起作用。我的代碼如遵循爲什麼Promise.then()中的代碼未被調用?

var Promise = require('bluebird'); 

var test = function(req) { 
    console.log('123'); 
}; 

var regist=Promise.promisify(test); 

app.post('/test', function (req, res) { 
    reg.regist() 
    .then(function() { 
     console.log('456'); 
    }); 

我發佈一個請求「/測試」,只看到123印在console.How我能在Promise.then代碼()工作?

+2

[閱讀promisify文檔(HTTP ://bluebirdjs.com/docs/api/promise.promisify.html)以更好地理解你所做的錯誤假設,以及你的代碼做錯了什麼 –

回答

1

Promise.promisify創建一個機制,自動傳遞迴調函數作爲您的原始函數的最後一個參數。你的函數不需要回調函數,也不會調用函數,所以沒有辦法解決這個承諾。

如果你的功能不同步,沒有在promisifying它遠點,但這裏的你怎麼可以這樣做:

var test = function(req, callback) { 
 
    console.log('123'); 
 

 
    callback(); 
 
}; 
 

 
var regist = Promise.promisify(test); 
 
var request = { someProperty: 'some value'}; 
 

 
regist(request) 
 
    .then(function() { 
 
    console.log('456'); 
 
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.4.7/bluebird.min.js"></script>

相關問題