我试图宣传这个geocoder库来连接外部api。自述文件说它的geocoder.geocode
方法需要location, callback
作为参数,但是on closer inspection,它实际上需要第三个参数 - 一个选项对象 - 所以它不能轻易地用蓝鸟和#39; s Promise.promisify()。
什么是最快的&宣传这些类库方法的简单方法是什么?
以下作品,但有更简单的方法吗?
function geocoderAsync(string) {
return new Promise(function (resolve, reject) {
return geocoder.geocode(string, function (err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
});
答案 0 :(得分:0)
如果它是图书馆中唯一奇怪的功能,我可能会做这样的事情。我认为Bluebird.fromCallback
是您正在寻找的功能。
var Promise = require('bluebird'),
geocoder = Promise.promisifyAll(require('geocoder'));
// If that is the only function with the odd callback order
// you could simply re-overwrite the `geocode` function.
geocoder.geocodeAsync = function (string, options) {
return Promise.fromCallback(function (callback) {
geocoder.geocode(string, callback, options);
});
};