0
Ich habe 3 Abfragen (bigquery), die asynchron ausgeführt werden müssen, aber mein weiterer Funktionsaufruf hängt von der Bedingung ab, dass alle 3 Abfragen ausgeführt wurden. Wie würde ich einen richtigen Arbeitscode dafür schreiben?Einen Codeblock synchron ausführen, Inhalt muss jedoch asynchron ausgeführt werden
hier ist mein Demo-Code:
var flag = 0;
var defer = q.defer();
var defer2 = q.defer()
function promiseMeSomething() {
var x =level2Queries()
x.then(function SuccessPromise(input) {
if (input == 3)
defer.resolve(input);
else
defer.reject('Flag not set because value of flag is '+input);
}, function (err) {
console.error('Fail bro! ' + err)
})
console.log(defer.promise)
return defer.promise;
}
function level2Queries() {
q.fcall(bigquery.query(sqlQuery7).then(function Success() {
flag++
}),
bigquery.query(sqlQuery8).then(function Success() {
flag++
}),
bigquery.query(sqlQuery9).then(function Success() {
flag++
})
)
defer2.resolve(flag);
return defer2.promise
}
var outputPromise = promiseMeSomething();
outputPromise.then(function (input) {
console.log(outputPromise)
}, function (input) {
console.log(outputPromise)
})
ich denke, die Funktion "alle" genannt wird. Es bedeutet, dass alle Versprechen erfüllt werden müssen, bevor es zurückkehrt – toddmo