【发布时间】:2019-12-10 05:38:16
【问题描述】:
我在网络方面不是很有经验,我正在尝试在一个类中进行一个简单的 api 调用。我遇到了新人面临的非常经典的回调问题,虽然有很多关于如何处理这个逻辑的例子,但我很难在一个类中实现它。我正在使用request。显然,下面的任何内容都不起作用,尤其是与 myBody 相关的内容,但我添加它是为了展示在担心异步调用之前我是如何从逻辑上考虑它的。
const request = require('request);
class GetData{
constructor(){
this.getData();
}
reallyGetData(){
var myData = this.getdata;
return myData;
}
getData(){
//var myBody;
request({'url':`https://somewebsite.com/things.json`, 'json': true }, function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
// Successfully returns body as expected
console.log("From inside getData: " + body);
//myBody = body;
});
//return myBody;
}
}
我找到的最有用的链接是this one。
但是,我对 node(和 javascript 一起)还很陌生,我似乎无法获得添加回调函数的语法。我从示例中尝试的所有内容都是无效语法,所以当我尝试添加类似于以下的回调函数时:
getData(function(result) {
console.log(result);
}
我不知道如何在一个类中实现这个逻辑。
【问题讨论】:
-
并不是说你不能让它与你的
request库一起工作,但如果你确实发现你想尝试一个类似的 API 与 Promise 一起工作,我建议你采取看node-fetch或request-promise-native
标签: javascript node.js api asynchronous request