0

我正在尝试构建一个同步的猫鼬查找。我采用了deasync的使用。 https://www.npmjs.com/package/deasync

这目前适用于保存,但不适用于查询

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();
}

只是永远挂起,最终它会通过。有没有人有任何想法?

4

2 回答 2

0

看下面的代码: 这样写while循环

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

这将正常工作。

于 2018-12-20T05:51:32.217 回答
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;
}
于 2016-02-09T07:20:47.240 回答