我开始使用 node.js , bluebird 承诺框架。我正在尝试将其与 elasticsearch javascript驱动程序集成。我设法使用以下代码使其工作。我想知道这是否是启动承诺的最佳方式。我省略了然后步骤中调用的函数。
var esPromise = client.search({
index: "myindex",
searchType: "count",
body: {
aggs: {
allIp: {
terms: {
field: "ip",
size: 1000,
order: {
_term: "asc"
}
}
}
}
}
});
new Promise(function (resolve, reject) {
esPromise.then(resolve, reject);
})
.then(extract_ips_from_aggs)
.then(sort_ips)
.then(log_ips)
.catch(function (error) {
console.log(error);
});
答案 0 :(得分:1)
您可以覆盖内部使用的延迟对象,如:
var Bluebird = require('bluebird');
var client = new elasticsearch.Client({
defer: function () {
// for older Bluebird
// return Bluebird.defer();
var resolve, reject;
var promise = new PromiseImpl(function() {
resolve = arguments[0];
reject = arguments[1];
});
return {
resolve: resolve,
reject: reject,
promise: promise
};
}
});
默认情况下,文档声明它使用ES6 Promise。