Javascript 同步运行代码块,但内容必须异步运行
我有3个查询(bigquery)需要异步执行,但我的进一步函数调用取决于所有3个查询都已完成执行的条件。我该如何为此编写正确的工作代码 这是我的演示代码:Javascript 同步运行代码块,但内容必须异步运行,javascript,node.js,google-bigquery,Javascript,Node.js,Google Bigquery,我有3个查询(bigquery)需要异步执行,但我的进一步函数调用取决于所有3个查询都已完成执行的条件。我该如何为此编写正确的工作代码 这是我的演示代码: var flag = 0; var defer = q.defer(); var defer2 = q.defer() function promiseMeSomething() { var x =level2Queries() x.then(function SuccessPromise(input) { if
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)
})
把承诺与一切结合起来
将承诺与一切结合起来
我认为该函数称为“all”。这意味着在它返回之前,所有的承诺都必须履行。我认为这个函数被称为“All”。这意味着所有的承诺都必须在它回来之前兑现