gpt4 book ai didi

node.js - NodeJS 使用 BlueBird Promisify 现有 API

转载 作者:太空宇宙 更新时间:2023-11-03 22:15:04 25 4
gpt4 key购买 nike

我有一个非常简单的 API,它从服务器获取一些数据,进行一些处理,然后将其发送到客户端。我正在尝试“ promise ”这个小模块。这是一个例子

var MyModule = function (){}

MyModule.prototype.makeRequest = function(requestURL){

//Set request up
//Return the promise for the request.
return request(requestOptions);
}

MyModule.prototype.myFunction = function(var1, var2, cb){

var URL = "http://....//";

this.makeRequest(URL)
.then(function(data)
{
//Some processing logic
cb(null,data);
})
.catch(function(err)
{
cb(err,null);
})
}

module.exports = MyModule;

然后为了使用这个模块,我想要执行以下操作...

 var MyModule = new(require('../lib/MyModule'));

MyModule.myFunction(var1,var2)
.then(function(data)
{
console.log(data);
}).catch(function(err){
console.log(err);
});

如何使用 BlueBird 使其正常工作?我一直在像这样尝试 PromisifyAll() ..

var MyModule = new(require('../lib/MyModule'));
var Promise = require("bluebird");
var MyModuleAsync = Promise.promisifyAll(MyModule);

我的方法显然是不正确的,我知道我可以在 API 内手动创建并返回 promise ,但文档建议我不需要这样做。

最佳答案

从 promise 一个功能开始

var MyModule = new(require('../lib/MyModule'));
var Promise = require("bluebird");
var MyModuleAsync = Promise.promisify(MyModule.myFunction, MyModule);

MyModuleAsync(var1, var2).then(function(res){
// etc
});

一旦你开始工作,你就可以开始考虑实现 promisifyAll()

关于node.js - NodeJS 使用 BlueBird Promisify 现有 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31521340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com