gpt4 book ai didi

javascript - 异步 map 不起作用

转载 作者:行者123 更新时间:2023-12-03 09:09:23 24 4
gpt4 key购买 nike

我有这样的东西

var async = require('async');
var request = require('request');//request urls

var urls = ['url1','url2', 'url3' ];

function requestUrl( url, callback){
console.log(callback.toString());
request(url, function(err, resp, body){
callback(null, body)
})
}

function cb(err, results){ console.log(results); }

然后我通过调用它

async.map(urls, requestUrl, cb);

我的“cb”从来没有被叫过。我在第二个参数中使用 .toString() 方法函数打印“回调”,它看起来像这样。

function (err, v) {
results[index] = v;
callback(err);
}

为什么它忽略我的回调并将其放在自己的回调中?

最佳答案

async.map(arr, 迭代器, [回调])

arr - 要迭代的数组。

iterator(item,callback) - 迭代器传递一个回调(err,transformed),一旦完成并出现错误(可以为空)和转换后的项目,必须调用该回调。

callback(err, results) - 可选 当所有迭代器函数完成或发生错误时调用的回调。 Results 是 arr 中转换后的项目的数组。

结果是一个数组。

看看这个 runnable .

var async = require('async');
var request = require('request');

var urls = ['http://www.google.fr', 'http://twitter.fr'];

function requester(url, done) {
console.log('request: %s', url);
request(url, function(err, r, body) {
console.log('request is done');
console.log('have error on it ?', err !== null);
if (err) return done(err);
var res = res;
var b = body;
done(null, {
response: r,
body: b
});
})
}

async.map(urls, requester, function(err, r) {
console.log('async callback');
console.log('have error on it ?', err !== null);
if (err){
console.log('on error', err);
return;
}
console.log('it\'s a success! Now take a look at result :)');
console.log('results[%s]', r.length);
});

如果您调用自己的端点(例如 http://localhost:3000/your/endpoint ),请确保此请求不会使您的 Node 应用程序崩溃。

关于javascript - 异步 map 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32126415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com