Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同步运行代码块,但内容必须异步运行_Javascript_Node.js_Google Bigquery - Fatal编程技术网

Javascript 同步运行代码块,但内容必须异步运行

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

我有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 (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”。这意味着所有的承诺都必须在它回来之前兑现