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

问题描述 投票:3回答:3

这是一个简单的场景..

我想将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 
node.js firebase callback promise firebase-authentication
3个回答
9
投票

如果要在promise上使用节点样式的回调,请像这样调用它们:

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

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


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本身的函数,它返回一个接收回调但不接收回调的函数。


-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){...}

© www.soinside.com 2019 - 2024. All rights reserved.