2016-06-28 104 views
0

我正在調用一個在查詢數據庫後返回對象的函數。但我很努力地讓函數等待數據庫返回結果,然後再返回最終的數據。等待Rethinkdb答應在返回父函數之前返回結果

請有人建議如何等待數據庫查詢完成?

addBasket: function(prodId, cookie) { 
    var nextCookie = cookie; 
    db.table('Events').filter({id: prodId}).pluck('eventName').run().then(function(result){ 
     newData.prodName = result[0].eventName; 
     nextCookie.basket.push(newData); 
     return nextCookie; 
    }).error(function(err){ 
     return; 
    }) 
} 
+1

你會想'return'從'addBasket'承諾這樣你就可以等待它。 – Bergi

回答

0

你會希望addBasket返回一個承諾

var funcs = { 
    addBasket: function(prodId, cookie) { 
     var nextCookie = cookie; 
     return new Promise(function(resolve, reject){ 
     db.table('Events').filter({id: prodId}).pluck('eventName').run().then(function(result){ 
      newData.prodName = result[0].eventName; 
      nextCookie.basket.push(newData); 
      resolve(nextCookie); 
     }).error(reject) 
     }); 
    } 
} 

那麼你可以做

funcs.addBasket(..args).then(function(nextCookie){....})