不太了解Q诺库

我在这里查看Q库: https : //github.com/kriskowal/q

这是我如何写一个函数与callback:

function token(callback) { require('crypto').randomBytes(34, function(ex, buf) { var token = buf.toString('hex'); callback(token); }) } exports.generateToken = token; 

那么我会:

 require('../models/security').generateToken(function (token) { console.log("here " + token) }) 

那我怎么做呢?

Q库与承诺一起工作 – 承诺在成功完成时得到解决 ,或在失败时被拒绝

在你向我们展示的代码中,你可以让generateToken返回一个令牌的承诺,或者把它作为你客户端代码中的承诺。 问与Q很容易实现。

从asynchronous任务返回承诺

 function token() { var deferred = Q.defer(); require('crypto').randomBytes(34, function(ex, buf) { // reject it if there was an exception! if (ex) { return deferred.reject(ex); } // resolve it with the correct string value var token = buf.toString('hex'); deferred.resolve(token); }); return deferred.promise; } 

generateToken视为承诺

 var generateToken = require('../models/security').generateToken; var deferred = Q.defer(); generateToken(deferred.makeNodeResolver()); deferred.promise.then(function() { console.log("here " + token); }); // same as above, but with less code Q.nfcall(generateToken).then(function(token) { console.log("here " + token); }); 

通过Q文档阅读,你可能会意识到其他方式来实现相同的。 我只列出了几个我知道会工作。

我希望它有帮助。