为什么Promise.then()中的代码没有被调用?

为什么Promise.then()中的代码没有被调用?

我写了一个expressjs和bluebird承诺的服务器。当我试图使用Promise.promisify()Promisify一个函数时,我发现我在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'); }); 

我发布了一个'/ test'的请求,只能看到在控制台上打印了123.如何在Promise.then()工作中编码?

Promise.promisify创build一个自动传入callback函数的机制,作为原始函数的最后一个参数。 你的函数不需要callback函数,也不需要调用函数,所以没有办法解决。

如果你的函数不是asynchronous的,那么在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>