如何将promise转换为节点js中的回调?

时间:2016-11-16 19:24:53

标签: node.js firebase callback promise firebase-authentication

这是一个简单的场景..

我想将firebase文档中给出的这些代码转换为我的api ..

如何将其转换为回调函数?

var uid = "some-uid";

admin.auth().createCustomToken(uid)
  .then(function(customToken) {
    // Send token back to client
  })
  .catch(function(error) {
      console.log("Error creating custom token:", error);
  });

以下是文档的链接..

https://firebase.google.com/docs/auth/admin/create-custom-tokens 

3 个答案:

答案 0 :(得分:9)

如果要在promise上使用节点式回调,请按以下方式调用它们:

.then(function(result) {
    callback(null, result);
}, function(error) {
    callback(error);
});

一些promise库也有帮助函数,比如Bluebirds .asCallback(callback)

答案 1 :(得分:0)

在NodeJS> 8.2中,您有一个require('util').callbackify()(与require('util').promisify()相反):

const { callbackify } = require('util');

callbackify(() => admin.auth().createCustomToken(uid))((err, customToken) => {
  // ...
});

或者如果您有其他地方的回叫:

const { callbackify } = require('util');

callbackify(() => promise)(callback);

请注意,它收到的函数返回一个Promise ,而不是Promise本身,并且它返回的 Function接收一个回调,但它自身不接收回调。

答案 2 :(得分:-1)

这非常简单:

function(uid, cb){
  admin.auth().createCustomToken(uid)
  .then(function(customToken) {
    cb(null, customToken);
  })
  .catch(function(error) {
      console.log("Error creating custom token:", error);
      cb(error, null);
  });
}

其中cb与function callback(error, token){...}

类似