javascript - Node js 中的异步函数处理

标签 javascript node.js

我在打印这两个语句时遇到问题,我有两个函数

var mongoose = require( 'mongoose' );
var_show_test = mongoose.model( 'test' );

exports.showTest = function(req,res) {
    var jsonString = [];

    var_show_test.find(function (err, testa) {
        console.log("In find");
    });

    console.log("In function");
}

但它正在按顺序打印语句

In function
In find

我想要的是按顺序打印语句,例如

In find
In function

我知道这是由于异步调用而发生的,我对回调函数有点困惑。如何处理这个问题以便按顺序打印语句。

最佳答案

对于初学者,如果您只想登录控制台,那么您可以将第二个 console.log 放入回调中 -

exports.showTest = function(req,res) {
    var jsonString = [];

    var_show_test.find(function (err, testa) {
        console.log("In find");
        console.log("In function");
    });
}

但是,如果您想在 find 回调执行后执行函数/方法,那么您需要在此处使用闭包 -

exports.showTest = (function (callback) {
    return function(req,res) {
        var jsonString = [];

        var_show_test.find(function (err, testa) {
            console.log("In find");
            callback();
        });
    }
})(callbackFunc);

function callbackFunc() {
    console.log('In my callback!');
}

关于javascript - Node js 中的异步函数处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20113220/

相关文章:

javascript - 我不明白 require.js 如何处理加载路径。每次定义模块时都需要使用 require.config 吗?

javascript - 在输入标签上使用 keyup 事件的 JS 搜索

javascript - 分别启动 Angular 和 Node,但相互连接

javascript - 如何在 Cordova 中从一个 Js 访问一个 Sql lite 变量到另一个 Js

javascript - "Error: write EPIPE"与 node.js 上的 Socket.io

javascript - 将鼠标悬停在另一个不相关类的子类上时如何更改一个类的 css?

javascript - 在 React Native 中使用 axios 从带有参数的 GET 方法的 HTTP 响应

javascript - window.innerwidth 的意外行为

node.js - 使用node.js和socket.io限制流式传输到网页的数据数量

javascript - 在 react 中单击div时需要找到一个代码来调用两个函数