Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回调函数数组_Javascript_Node.js_Asynchronous_Callback - Fatal编程技术网

Javascript 回调函数数组

Javascript 回调函数数组,javascript,node.js,asynchronous,callback,Javascript,Node.js,Asynchronous,Callback,我在做什么 function1(function(){ function2(function(){ function3(function(){ function4(); } } } 有更简单的方法吗 miracleFunction([function1,function2,function3,function4]); miracleFunction = function(array){ ??? } 在npm上使

我在做什么

function1(function(){
    function2(function(){
        function3(function(){
            function4();
        }
    }
}
有更简单的方法吗

miracleFunction([function1,function2,function3,function4]);

miracleFunction = function(array){
    ???
}
npm
上使用时,可以使用这样的数组,例如:

var async = require('async');
async.series([function1, function2, function3, function4]);

除了简单地在一系列中运行多个异步函数外,它还具有简化并行运行异步操作、使用异步函数映射数组以及各种其他有用的组合器的功能。

看看承诺,它还允许您很好地处理错误


Q特别好,只支持您的用例。此处的直接链接:

与其深入研究回调,不如将回调分解为易于理解的函数:

function GetUserData(id, callback) {
    // db queries, etc
    connection.query('...get user info...', function (err, results) {
        connection.query('...get user related whatnot...', function (err, results) {
            callback ();
        });
    });
}

connection.query('...load page data...', function (err, results) {
    GetUserData( function () {
        res.render('page.ejs', ... );
    });
});

您甚至可以将更多使用的函数分解成一个模块,这样代码中就不会有太多的混乱。异步包看起来不错,但对我个人来说,我喜欢看到流程。始终取决于程序员的喜好。

通常被称为回调地狱…看看