我正在使用API(Rick and Morty API)并使用XMLHttpResquest练习回调。
如您所见,这是我的代码:
let XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
let API = 'https://rickandmortyapi.com/api/character';
function fetchData(url_api, callback) {
let xhttp = new XMLHttpRequest();
xhttp.open('GET', url_api, true);
xhttp.onreadystatechange = function(event) {
if(xhttp.readyState === 4) {
if(xhttp.status === 200) {
callback(null, JSON.parse(xhttp.responseText))
} else {
const error = new Error('Error ' + url_api);
return callback(error, null);
}
}
}
xhttp.send();
}
fetchData(API, function(error1, data1) {
if (error1) return console.error(error1);
fetchData(API + data1.results[0].id, function(error2, data2) {
if (error2) return console.error(error2);
fetchData(data2.origin.url, function (error3, data3) {
if (error3) return console.error(error3);
console.log(data1.info.count);
console.log(data2.name);
console.log(data3.dimension);
});
});
});
它返回一个错误,但是我不确定哪种类型的错误:
yarn run v1.22.4 $ node src / callback / challenge.js错误:错误https://rickandmortyapi.com/api/character在export.XMLHttpRequest.xhttp.onreadystatechange(A:\ Carrera de Backend con JavaScript \ Curso deAsincronismo \ asincronismo \ src \ callback \ challenge.js:12:31)在export.XMLHttpRequest.dispatchEvent(A:\ Carrera de Backend con JavaScript \ Curso deAsincronismo \ asincronismo \ node_modules \ xmlhttprequest \ lib \ XMLHttpRequest.js:591:25)在setState处(A:\ Carrera de Backend con JavaScript \ Curso de Asincronismo \ asincronismo \ node_modules \ xmlhttprequest \ lib \ XMLHttpRequest.js:610:14)在export.XMLHttpRequest.handleError(A:\ Carrera de Backend con JavaScript \ Curso deAsincronismo \ asincronismo \ node_modules \ xmlhttprequest \ lib \ XMLHttpRequest.js:532:5)在ClientRequest.errorHandler(A:\ Carrera de Backend con JavaScript \ Curso deAsincronismo \ asincronismo \ node_modules \ xmlhttprequest \ lib \ XMLHttpRequest.js:459:14)在ClientRequest.emit(events.js:311:20)在TLSSocket.socketErrorListener(_http_client.js:426:9)在TLSSocket.emit(events.js:311:20)在emitErrorNT上(internal / streams / destroy.js:92:8)在emissionErrorAndCloseNT(internal / streams / destroy.js:60:3)在1.51秒内完成。
我了解没有满足if条件,但是我该如何解决?没有提供更多详细信息。
错误在于网址中。我忘了把/放在最后。因此,在将url与请求的其余部分嵌套在一起时,它无法将字符串识别为有效的url。