【发布时间】:2015-09-10 23:13:12
【问题描述】:
在使用 async.map 对其发起查询之前,我遇到了从 http 请求接收数组的问题。
我的服务器端控制器代码如下(表达 4):
'use strict';
var _ = require('lodash');
var request = require('request');
var asynce = require('async');
exports.index = function (req, res) {
function cleanip(str) {
return str.replace("/", "%2F");
}
var myUrls = [];
var IpBlockedForSpam = [];
var list = ["127.0.0.1/32", "192.168.0.1/32"];
for (var i in list) {
myUrls.push("http://localhost:9000/myapi/ip/blockedForSpam/" + cleanip(list[i]));
}
asynce.map(myUrls, function (url, callback) {
request(url, function (error, response, html) {
var r = JSON.parse(html);
for (var i in r) {
IpBlockedForSpam.push(r[i]);
}
callback(error, html);
});
}, function (err, results) {
res.jsonp(IpBlockedForSpam);
});
};
此代码使用 var list 作为静态代码。
我想要实现的是能够使用这样的 http 请求来填充这个变量:
request("http://localhost:9000/myapi/ip", function(error, response, body) {
//console.log(body);
remotelist.push(JSON.parse(body));
});
调用http://localhost:9000/myapi/ip返回:
[
"127.0.0.1/32",
"192.168.0.1/32"
]
我尝试了很多没有结果的事情,因为大多数时候,我的异步方法是在我需要的 http 调用请求检索列表之前启动的。
另外,是否可以不使用http://localhost:9000/myapi/* 之类的网址而只使用/myapi/*
提前感谢您的建议,也许我对这种方法有误。
再见。
【问题讨论】:
标签: javascript node.js asynchronous express httprequest