0
var limit = 0;

Settings.find({ settings: "settings" }, function (err, docs) {
    limit=docs[0].keywords;  //6
    console.log('Limit from Inner : ' + limit);
});

console.log('Limit from Out : ' + limit);

它会给我这样的输出:“外部限制:0 内部限制:6”

我想先调用内部,然后输出:“外部限制:6 内部限制:6”

4

1 回答 1

1

Node.js 是异步的,在调用console.log('Limit from Out : ' + limit);的回调之前执行Settings.find()

如果您必须按照您的描述进行操作,您可以使用一些控制流库,例如https://github.com/caolan/async并执行以下操作:

var limit = 0;

async.series([
    function(callback) {
        Settings.find({ settings: "settings" }, function (err, docs) {
            limit=docs[0].keywords;  //6
            console.log('Limit from Inner : ' + limit);
            callback(err);
        });
    }
], function(err) {
    console.log('Limit from Out : ' + limit);
});
于 2013-11-11T08:43:40.197 回答