新浪API返回的JSON
{
ret: 1,
start: -1,
end: -1,
country: '中国',
province: '上海',
city: '上海',
district: '',
isp: '',
type: '',
desc: ''
}
node代码
class IP {
constructor(){
this.name = 'IPAPI';
};
getIpInfo(ip, cb){
let options = {
host: 'int.dpool.sina.com.cn',
path: `/iplookup/iplookup.php?format=json&ip=${ip}`,
method: 'get'
};
http.request(options, (response) => {
var data = '';
response.on('data',(chunk) => {
data+= chunk;
}).on('end', function () {
data = JSON.parse(data);
data.ip = ip;
this.data = data;
cb(null,data);
}).on('error',function(){
cb(null, {status:'Error!'});
})
}).end();
}
}
这个JSON目前只能通过回调方式获取.
let ip = new IP();
ip.getIpInfo('180.157.199.109', (err,data) => {
console.log(data);
// data = JSON
});
我想改成
let ip = new IP();
console.log(ip.getIpInfo('180.157.199.109');)
//ip.getIpInfo = JSON;
这样!
回复 (18)
C
你这是异步IO转同步IO
或者可以考虑做成形式上的同步IO,可以考虑用co.js或者pormise
O
@CoderIvan 朋友, 可以写个看看么!?
D
O
@dlutwuwei 写了N次还没实现.
C
什么叫暴露json
L
这个我也用过 显示当前定位城市... $.getScript
O
@captainblue2013 目前只能通过
ip.getIpInfo('180.157.199.109', function(err,data) {
console.log(data);
// 这里的data输出的是新浪API的JSON
});
这个回调方式输出新浪API的JSON。
我想改成console.log(ip.getIpInfo('180.157.199.109));`就能输出新浪API的JSON。
O
@liyunzhi1993 这个是在NODEJS中请求,不是在客户端。
Q
用streamline和aync的飘过
Q
引用 orbury@liyunzhi1993 这个是在NODEJS中请求,不是在客户端。
@orbury 建议先了解一下什么是异步io,然后自然就明白怎么写了…
O
@qimenxiaozi 别飘啊!能不能帮我把这个问题解决。新人,求帮助。
O
@lonso 我也只能试试, 我也是才学到回调这块。
T
请用php
H
你现在的代码是回调的形式,可以改成同步的形式。es6的新特性:generator,再配上co更好。 但是本质上还是异步的,只不过代码看上去像同步的而已。
O
@huangshaohui 我试试, 谢谢你的意见。
D
@lonso 楼主的意思是同步编码不用理会回调。然而这需要一定的处理,比如async,promise等,否则就使用callback吧
O
@DevinXian 我尝试着写写, 这也是学习的过程, 哎! 要是有个对照, 我觉得, 学的就快多了. 自己看文档, 还是有很多不明白.
O
@lonso 其实我也不明白这是什么形式.
参与回复
登录后即可参与回复。登录