嵌套的getJSON调用

nested getJSON calls

本文关键字:调用 getJSON 嵌套      更新时间:2023-09-26

所以。。我是这个Javascript的新手,并且使用JSON。我正在开发一个网页,在这种情况下需要评论,然后是当前用户名。

为了开发它,我尝试创建一个函数,使用getJSON((方法返回用户名,但显然这是行不通的。相反,我想到的是使用嵌套的getJSON调用。

类似这样的东西:

$.getJSON(getCommentsURL, function(jsonComments){
    $.getJSON(getUsernameURL, function(username){
        jsonComments[0].deleteButton = (jsonComments[0].username === username)
        // programming logic
    });
});

主要是,我需要这两种信息的原因在代码示例的第3行中进行了描述。

我的问题是,这种实施方式在传统上可以接受吗?它确实有效,但可能有一种更合适的方式来实现它。我之所以关心惯例和适当的方法,不仅是为了我自己的知识,还因为这是一项学校作业,要求代码干净正确(不仅有效(。

非常感谢您的回答。

这是使用jQuery对Promise.all-$.when的答案的一个很好的用例。

var commentsPromise = $.getJSON(getCommentsURL);
var usernamePromise = $.getJSON(getUsernameURL);
// when both requests complete
$.when(commentsPromise, usernamePromise).then(function(jsonComments, username) {
  jsonComments[0].deleteButton = (jsonComments[0].username === username)
  // programming logic
});

Question的方法应该返回预期结果,您也可以使用.then()。您还可以将.fail().catch()链接到.then()以处理错误。注意.then() 中的return语句

$.getJSON(getCommentsURL)
.then(function(jsonComments) {
    return $.getJSON(getUsernameURL)
           .then(function(username){
             jsonComments[0]
             .deleteButton = (jsonComments[0].username === username)
             // programming logic
           });
})
.fail(function(jqxhr, textStatus, errorThrown) {
  console.log(errorThrown)
})