Node.js |快递.js |Redis.io - 处理订单



对于我的项目,我正在使用 Node.js 与 express.js 和 redis.io 作为数据库。现在我有一个带有查询参数的获取资源。它应该给我保存特定书籍的图书馆的 ID。但是我不明白我的程序的处理顺序。正如您在下面的代码中看到的,我将库 Array 打印到 3 次到控制台。

var express = require('express');
var bodyParser = require('body-parser');
var redis = require('redis');
var db = redis.createClient();
var jsonParser = bodyParser.json();
var app = express();
app.use(jsonParser);
app.get('/test', function (req, res) {
    if (req.query.book != null) {
        var book_id = req.query.book;
        var libraries = [];
        db.get('book:' + book_id, function (err, rep) {
            var book = JSON.parse(rep);
            var libs = book.libraries;
            libs.forEach(function (val) {
                libraries.push(val.id);
            });
            console.log("1.: " + libraries);
        });
        console.log("2.: " + libraries);
    }
    console.log("3.: " + libraries);
});
app.listen(1337);

这是我控制台中的结果:

阿拉伯数字。:

3.:

1.: 1,4

有人可以解释一下吗?为什么我的数组在第 2 点和第 3 点上是 emtpy 的?

您的回调是异步执行的。 第二个是日志是第一个,因为它在第三个之前处于同步块中。 第一个出现在最后,因为它是在你从数据库获取结果后调用的,这是异步发生的,所以在代码的第 2 和第 3 部分之后。

最新更新