2016-02-09 2 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, что очень и очень неправильно. –

+0

Вот что я понял. перед использованием deasync у меня была сумасшедшая петля, которая в основном блокировала все. Предполагается, что каркас должен преодолеть это – CodeMilian

+0

. Я изменил свой код на это только сейчас, и, похоже, он требует выполнения («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; 
} 
Смежные вопросы