【发布时间】:2016-11-06 15:41:02
【问题描述】:
当我多次运行 $.ajax 时,它似乎没有等待 ajax 调用完成,然后继续运行我的代码。 当我使用 jsonp 时,设置 'async: false' 不起作用(或者我已经读过)。我必须 jsonp 才能访问 Media Wiki api,所以改变它不是一种选择。我是 Javascript 的初学者,这是我可以使用“承诺”的东西吗?
var articleList = ['Abaft', 'Aspect-oriented%20programming', 'Defecation', 'Feces', 'Perl%20Object-Oriented%20Persistence', 'Poop%20(constellation)', 'Poop%20deck', 'Pooper-scooper', 'Poopy', 'Stern', 'Zoboomafoo'];
function retrieveSummary(jsonp) {
console.log(jsonp);
}
function fetchSummary() {
for (var article in articleList) {
$.ajax({
url: 'https://en.wikipedia.org/w/api.php?action=parse&page=' + article + '&prop=text&format=json§ion=0&callback=?',
dataType: 'jsonp',
contentType: 'application/json',
jsonpCallback: 'retrieveSummary',
});
}
}
我得到的输出是 'Poop (constellation)' 的 jsonp 对象,它位于列表的中间。这是我得到的唯一对象,尽管为 articleList 中的每篇文章都调用了回调函数。
【问题讨论】:
-
“这是我可以使用'承诺'的东西吗?”。是的。
-
也应该让 jquery 创建回调。为每个请求使用相同的请求是一个问题
-
“让 jquery 创建回调”是什么意思,对于每个请求使用相同的回调有什么问题?
-
将
jsonpCallback:'retrieveSummry更改为success:function(resp){ console.log(resp); }将看到所有响应记录到控制台 -
为什么调用 'jsonpCallback' 没有看到记录到控制台的所有响应?
标签: javascript jquery ajax