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是一个异步调用