Javascript 循环完成后如何返回回调

Javascript 循环完成后如何返回回调,javascript,Javascript,我有一个解决方案,我有两个循环在彼此内部,看起来像这样: function myFunc(types, pages, callback) { var pageResults = []; for (var i = 0; i < types.length; i++) { var type = types[i]; for (var j = 1; j < pages; j++) { getBikes(type, j, f

我有一个解决方案,我有两个循环在彼此内部,看起来像这样:

function myFunc(types, pages, callback) {
    var pageResults = [];
    for (var i = 0; i < types.length; i++) {
        var type = types[i];
        for (var j = 1; j < pages; j++) {
            getBikes(type, j, function(err, results, settings){
                if(err) throw err;
                var obj = {
                    results: results,
                    settings: settings
                };
                pageResults.push(obj);
            });
        };
    };
    return callback(pageResults);
});

var types = ["string1", "string2", "string3", "string4"];
var pages = 15;
myFunc(types, pages, function(pageResults){
    console.log("done");
});
但这会立即结束,它会在类型循环中的1个循环之后返回,如果我记录从内部函数返回的obj,而不返回回调,它将一直运行


是的,getBikes是一个类似于ajax的异步调用,但在nodejs中,有一个名为request.js的模块,您不能返回回调值,但可以像下面那样调用回调函数

function myFunc(types, pages, callback) {
    var pageResults = [];
    for (var i = 0; i < types.length; i++) {
        var type = types[i];
        for (var j = 1; j < pages; j++) {
            getBikes(type, j, function(err, results, settings){
                if(err) throw err;
                var obj = {
                    results: results,
                    settings: settings
                };
                pageResults.push(obj);
                if((i === types.length-1) && (j === pages -1)){
                   callback(pageResults);
                }
            });
        };
    };
});

getBikes是ajax函数吗?getBikes是异步的吗?/它是一个requestfunction,它是一个可以请求内容的nodejs模块,比如用于nodejs的ajax。getBikes是一个异步调用