我在网络方面的经验不是很丰富,我正在尝试在类中进行简单的 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;
}
}
我发现解释如何在 getData 范围之外获取正文的最有用的链接是 this one .
但是,我对 Node (和 JavaScript)还很陌生,而且我似乎无法获得添加回调函数的语法。我从示例中尝试的所有内容都是无效语法,因此当我尝试添加类似于以下内容的回调函数时:
getData(function(result) {
console.log(result);
}
我不知道如何在类中实现这个逻辑。
最佳答案
getData()
应声明为将函数视为“一等公民”。它也可以称为函数指针。
getData(callback) {
...
callback(result);
}
调用它时,您将使用
getData(function(result) { ... });
关于javascript - 使用请求并让回调在函数内工作的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57312135/