2016-02-09 70 views
0

我正在嘗試構建一個同步貓鼬查找。我採用了deasync。 https://www.npmjs.com/package/deasyncMongoose synchronousFind

目前這個工作可以節省,但它不工作進行查詢

exports.synchronousFind = function (instanceModel, query) { 
    var ready = false; 
    var result = null; 
    instanceModel.find(query, function (err, tenantUser) { 
     ready = true; 
     if (err) { 
      console.log(err); 
     } else { 
      result = tenantUser; 
     } 
    }); 

    while (ready === false) { 
     require('deasync').runLoopOnce(); 
    } 
    return result; 
} 

的這部分代碼

while (ready === false) { 
    require('deasync').runLoopOnce(); 
} 

只是掛永遠並最終經過。有沒有人有任何想法?

+0

While循環就像是太快了,當它到達那裏,它會經歷一個億的循環時間現在是正常工作,所以基本上你是通過一個while循環阻止整個過程,這是非常非常錯誤的。 –

+0

這就是我想的。之前使用deasync我有一個瘋狂的循環,基本上阻止了一切。該框架應該克服這個問題 – CodeMilian

+0

我剛剛改變了我的代碼,並且它似乎正在工作require('deasync')。loopWhile(function(){return!ready;}); – CodeMilian

回答

0

我改變了我的代碼,這和預期

exports.synchronousFind = function (instanceModel, query) { 
    var ready = false; 
    var result = null; 
    instanceModel.find(query, function (err, tenantUser) { 
     ready = true; 
     if (err) { 
      console.log(err); 
     } else { 
      result = tenantUser; 
     } 
    }); 

    require('deasync').loopWhile(function(){return !ready;}); 

    /*while (ready === false) { 
     require('deasync').runLoopOnce(); 
    }*/ 
    return result; 
}