2016-09-18 2 views
0
function runAll(){ 
    for (var i = 0; i < Math.random(); i++) { 
     pool.connect(function(err, client, done) { 
      client.query("update box set gamer_id=null where box_id=$1; ", [i], function(err, resultUpdate) { 
       if(err) 
        return "has error" 
       //when all query finished then return value 
       return "finished all query"; 

      }) 
     }) 
    } 

    return "after for"; 
} 

이 함수는 "for for"를 반환하지만 모든 쿼리가 완료되면 모든 쿼리가 완료 될 때까지이 쿼리는 일부 오류가있을 수 있기 때문에 반환하려고합니다.모든 쿼리가 완료된 시간 가져 오기

모든 쿼리가 완료되면 어떻게 값을 반환 할 수 있습니까?

나는

function runAll(cb){ 
    var total = Math.random() 
    for (var i = 0; i < total; i++) { 
     pool.connect(function(err, client, done) { 
      client.query("update box set gamer_id=null where box_id=$1; ", [i], function(err, resultUpdate) { 
       i==total-1 && cb(err, resultUpdate) 
      }) 
     }) 
    } 
} 

console.log("before invoke of runAll") 

console.time("dbprocess"); 
runAll(function allDone(err, res){ 
    console.log("after call of runAll completed"); 
    console.timeEnd("dbprocess"); 
    if(err) 
     return "has error" 
    //when all query finished then return value 
    return "finished all query"; 

}) 

console.log("after invoke of runAll") 

도 볼이 시도에 대한 ...

+0

그리고'pg-promise'를 사용할 수없는 이유는 무엇입니까? 문제를 쉽게 해결할 수 있습니다. 참조 : http://stackoverflow.com/questions/39537820/synchronous-query-with-node-and-postgresql –

답변

1

PG-약속을 사용할 수 없습니다이 SO JS의 타이머에 대한 https://stackoverflow.com/a/18427652/4466350

I 돈 콜백 (callback) 요법에 대한 설명이 필요하다고 느끼지만, 잘못 생각한 것 같습니다. 알려주세요.