javascript - 异步 map 不起作用

标签 javascript node.js asynchronous async.js

我有这样的东西

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/

相关文章:

javascript - 如何立即执行 mongoose 查询并使用 Promise.all 等待它们?

javascript - 如何通过在javascript中一起使用函数和闭包来获得相同的结果

c# - 在 UI 构造函数中使用 Task.Run() 时处理异常

asp.net - 在MVC路由中使用 “async”(即使应该完成)也会使路由死锁;如何避免这种情况?

PHP+fork() : How to run a fork in a PHP code

javascript - 从本地文件获取File对象

javascript - 使用 jQuery 的each 循环数组会导致在创建字符串时在开头出现未定义的值

node.js - JWT 身份验证安全吗?它如何保护 CORS?

node.js - 构建 Alexa 技能时,在 lambda 函数中使用 NodeJS 请求的 http 响应不正确或超时

node.js - API 抓取应该是前端还是后端?