Я понимаю, как большей частью работают обещания, но у меня много трудностей с пониманием того, как с ними обращаться, когда мне нужно передать функцию в качестве параметра:
var promise = new Promise(function(resolve, reject) {
// Do async job
ec2.describeInstances(function(err, data) {
console.log("\nIn describe instances:\n");
var list = [];
if (err) reject(err); // an error occurred
else {
var i = 0 ;
//console.log(data.Reservations);
var reservations = data.Reservations;
for (var i in reservations) {
var instances = reservations[i]['Instances'];
var j = 0;
//console.log(JSON.stringify(instances, null, 2));
for (j in instances){
var tags = instances[j]
var k = 0;
var instanceId = tags['InstanceId'];
var tag = tags['Tags'];
var l;
//console.log(tag);
for (l in tag){
//console.log(instanceId);
//console.log(tag[l]['Value']);
if (String(tag[l]['Value']) == '2018-10-15T23:45' || String(tag[l]['Key']) == 'killdate') {
console.log(tag[l]['Key'] + ' ' + tag[l]['Value']);
list.push(instanceId);
console.log(list);
//return(list);
}
}
}
}
resolve(list);
}
});
});
promise.then(function (list) {
ec2.terminateInstances(list, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log("made it"); });
});
до того, как у меня былПервая часть кода как:
return new Promise(function(resolve, reject) { ... }
, и это работало для первой части, но как только я изменил его на «var» и добавил новое обещание внизу, он перестал работать.(править) Когда я имею в виду «перестал работать», я имею в виду, что ни одна из двух функций не запускается, то есть: он завершает обработчик до завершения любой из функций и ни одного из операторов возврата или журналов консоли.
Любая помощь будет принята с благодарностью!
Спасибо!