javascript - 回调函数承诺 ajax
问题描述
我在使用 Promise 回调从 json 显示信息时遇到问题。我已经显示帖子,但我无法显示每个帖子的评论。泰。
这是我的代码
JS
var root = 'https://jsonplaceholder.typicode.com/posts'
$.ajax({
url: root,
method:'GET',
data:{
a:''
}
})
.done(function(post) {
for(i=0 ; i<10;i++){
document.write(JSON.stringify(post[i]))
document.write('<br>')
document.write('<br>')
document.write('<br>')
}
})
.done(function(comments){
for(j=0; j<10;j++){
$.ajax({
url: root +'/'+ j+'/comments',
method:'GET',
comments:{
b:''
}
})
}
})
解决方案
如果您可以使用 ES8 语法async
await
,请执行以下操作:
async function getHTML() {
const root = 'https://jsonplaceholder.typicode.com/posts';
const response = await $.get(root);
let html = "";
for (let i = 0; i < 10; i++) {
html += JSON.stringify(response[i]) + "</br>";
comments = await $.get(root +'/' + i +'/comments');
for (const comment of comments) {
html += JSON.stringify(comment) + "</br>";
}
}
return html;
}
getHTML().then(html => console.log(html), err => console.error(err));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
以下是使用 ES6 的方法Promise.all
:
function getHTML() {
var root = 'https://jsonplaceholder.typicode.com/posts';
return $.get(root).then(function (response) {
var html = "";
var promises = []; // collect the requests for all comments
for (var i = 0; i < 10; i++) {
promises.push($.get(root +'/' + i +'/comments').promise());
}
return Promise.all(promises).then(function (response2) {
for (var i = 0; i < 10; i++) {
html += JSON.stringify(response[i]) + "</br>";
for (var j = 0; j < response2.length; j++) {
html += JSON.stringify(response2[j]) + "</br>";
}
}
return html;
});
});
}
getHTML().then((html) => console.log(html));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
推荐阅读
- pytorch - 火炬培训;“运行时错误:PyTorch 和 torchvision 版本不兼容......”
- java - 声明的包“”与预期的包“(文件名)”不匹配
- opengl - OpenGL中的预乘alpha和多重采样
- html - 光标指针适用于 chrome 但不适用于 Firefox
- c++ - CLang 中的 C++20 概念支持
- c# - 对于我制作了 2 个数组 char[] 和 int[] 的项目,它们的大小相同,我希望控制台返回响应
- python - 如何获取任何一个月的最后一周的日期
- python - google colab pro 可以连接超过 24 小时吗?
- python - Python“找不到模块”或“没有父级的相对路径”或“没有命名的模块
" 不一致的错误 - android - Android - 当 android 释放在 onCreate 中创建的数据的内存时会发生什么