我有一个类似这样的AWS呼叫:
ecs.describeServices(params, function(err, data) {
if (err) {
return { data: '',success: false };
} else {
return { data: 'whohoo',success: true};
}
});
这是一种需要返回一个承诺的方法,该承诺可以解析为我的返回对象。
我一直在尝试这种类型的解决方案,但无法弄清楚。
var keepsHisWord;
keepsHisWord = true;
var promise1 = new Promise(function(resolve, reject) {
if (keepsHisWord) {
resolve({ mytest: "mytest101" });
} else {
reject("The man doesnt want to keep his word");
}
});
编辑: 工作。感谢两个发帖的人。这确实很有帮助。并想知道为什么这个问题不赞成。我首先做了很多研究。我想选民不是那么聪明。
var promise1 = function(params) {
return new Promise(function(resolve, reject) {
ecs.describeServices(params, function(err, data) {
if (err) {
resolve({
error: "my error"
});
} else {
resolve({
runningCount: data.services[0].runningCount,
pendingCount: data.services[0].pendingCount,
status: data.services[0].status,
desiredCount: data.services[0].desiredCount,
createdAt: data.services[0].desiredCount,
events: data.services[0].events
});
}
});
});
};
return promise1(params);
答案 0 :(得分:1)
将您的服务电话变成承诺:
promiseFunc = function(params) {
return new Promise(function(resolve,reject){
ecs.describeServices(params, function(err, data) {
if (err) {
resolve({ data: '',success: false });
} else {
reject({ data: 'whohoo',success: true});
}
});
})
}
然后使用它:
promiseFunc(params).then(x => {})
答案 1 :(得分:0)
从节点8开始,有一个util.promisify
函数,正是该函数
var util = require('util');
var describeServices = util.promisify(ecs.describeServices);
describeServices(params)
.then()
.catch()
您还可以在Internet上找到此功能的许多实现。