我无法理解我的代码执行的顺序

i can't understand the order in which my code is executing

在给定的代码中,首先执行 .find() 方法,然后执行 .create() 方法,但是在代码中它们的定义相反,您可以 see.I 知道这与事件循环有关但是我无法理解我的代码的概念视图,所以请逐步解释。

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/cat_app', {useNewUrlParser: true});

const catSchema = new mongoose.Schema({
    name: String,
    age: Number,
    temperament: String
});

const Cat = mongoose.model("Cat", catSchema);

Cat.create({name: "uleru", age: 7, temperament: "jarigon"}, (err, cats) =>
{
    if(err) console.log(err);
    else console.log("cat has been added to database" + cats);
});

 Cat.find({}, function (err, cats) {
     if (err) return console.error(err);
     console.log(cats);
});

要了解为什么会出现这种行为,您需要了解异步代码。 Nodejs 会读取你的指令,然后就完成了。当 find 方法完成时,它调用定义的回调。想象一下查找操作非常复杂,那么您的创建函数回调将首先执行。 (但查找操作将同时执行)。要了解这一点,我可以推荐以下视频。煮点咖啡,收听 :)

What the heck is the event loop anyway? | Philip Roberts | JSConf EU

今天大多数 Nodejs 程序员使用 Promises 来处理异步代码,您可以在这里了解:

Promises - Part 8 of Functional Programming in JavaScript

Async JS Crash Course - Callbacks, Promises, Async Await

希望对您有所帮助。