为什么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>