javascript - 如何在第二个 ajax 调用之外获得价值
问题描述
我有两个 API 调用:
第一个 API 调用获取 ISBN 列表。
第二个 API 调用从第一步中的 ISBN 列表中获取每个 ISBN 的信息。
第 1 步中的列表可能包含 50 个 ISBN,但在第 2 步检查每个 ISBN 的信息时,如果缺少某些信息,我不想显示或计算该 ISBN。
我的最终目标是用完整的信息计算我拥有的 ISBN 总数,但由于 Ajax 是异步的,我看不到检索它。
let request = new XMLHttpRequest();
request.open("GET",requestHTML,true)
request.send();
request.onload = parseXML;
function parseXML(){
const xmlText = request.responseText;
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlText,"text/xml");
var isbns = xmlDoc.getElementsByTagName("isbn");
let counter = 0;
for(isbn of isbns){
let isbnString = isbn.textContent;
let isbnURL = `https://openlibrary.org/api/books?jscmd=data&format=json&bibkeys=ISBN:${isbnString}`;
$.ajax({
type: 'GET',
url: isbnURL,
dataType: 'json',
success: function(result){
...
if(hasAllInfo){
$("#content_container").append(`<div class="book_container" id="${bookid}">`);
...
}
counter ++;
},
error: function(){
console.log('ERROR');
}
})
}
}
console.log("Total books found with all information:" + counter);
我希望最后一行显示找到的包含所有信息的 ISBN 总数,但我得到 0
解决方案
它非常接近,您只需console.log
将counter
.
let request = new XMLHttpRequest();
request.open("GET",requestHTML,true)
request.send();
request.onload = parseXML;
function parseXML(){
const xmlText = request.responseText;
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlText,"text/xml");
var isbns = xmlDoc.getElementsByTagName("isbn");
let counter = 0;
for(isbn of isbns){
let isbnString = isbn.textContent;
let isbnURL = `https://openlibrary.org/api/books?jscmd=data&format=json&bibkeys=ISBN:${isbnString}`;
$.ajax({
type: 'GET',
url: isbnURL,
dataType: 'json',
success: function(result){
...
if(hasAllInfo){
$("#content_container").append(`<div class="book_container" id="${bookid}">`);
...
}
// changes here
if(++counter === isbns.length){
console.log("Total books found with all information:" + counter);
}
},
error: function(){
console.log('ERROR');
}
})
}
}
推荐阅读
- reactjs - 绑定元素“searchTerm”隐式具有“任何”类型。打字稿
- gstreamer - h264parse 损坏/无效 nal
- javascript - 当元素是数组时,使用 JavaScript Set 类的最佳实践是什么
- dns - DNS 委托 - 是否可以跳过级别?
- javascript - 从远程服务器 API 获取时间差(以毫秒为单位)
- sql-server - JDBC连接到错误的服务器
- reactjs - {"detail":"Method \"POST\" not allowed."} 有什么解决方案吗?
- typescript - 如何使用 Nesjs 验证 DTO 作为数字而不是空的?
- python - 如何使用带有空格的列名的 ProjectExpression?
- amazon-web-services - AWS 从 Lambda S3 用例生成 CloudFormation