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

问题描述:

为什么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)以更好地理解你所做的错误假设,以及你的代码做错了什么 –

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>