当前位置: 首页 > 面试题库 >

多个顺序fetch()承诺

秦楚
2023-03-14
问题内容

我必须做一个序列的fetch()承诺:我一次只有1个网址,这意味着只有1个fetch()诺言。每次我收到一个json时,其中一个都包含另一个json的网址,因此我必须做出另一个fetch()承诺。

我可以处理多个诺言,但是在这种情况下,我做不到Promise.all(),因为我没有所有的URL,只有一个。

这个例子不起作用,全部冻结。

function fetchNextJson(json_url) 
{
    return fetch(json_url, {
            method: 'get'
        })
        .then(function(response) {
            return response.json();
        })
        .then(function(json) {
            console.log(json);
            return json;
        })
        .catch(function(err) {
            console.log('error: ' + error);
        });
}


function getItems(next_json_url) 
{
    if (!(next_json_url)) return;

    get_items = fetchNextJson(next_json_url);

    interval = $q.when(get_items).then(function(response) {
        console.log(response);
        next_json_url = response.Pagination.NextPage.Href;
    });

    getItems(next_json_url);
}


var next_json_url = 'http://localhost:3000/one';

getItems(next_json_url);

问题答案:

您可以使用递归

function fetchNextJson(json_url) {
    return fetch(json_url, {
            method: 'get'
        })
        .then(function(response) {
            return response.json();
        })
        .then(function(json) {
            results.push(json);
            return json.Pagination.NextPage.Href 
                   ? fetchNextJson(json.Pagination.NextPage.Href)
                   : results
        })
        .catch(function(err) {
            console.log('error: ' + error);
        });
}


var next_json_url = 'http://localhost:3000/one';
var results = [];

fetchNextJson(json_url).then(function(res) {
  console.log(res)
})


 类似资料:
  • 本文向大家介绍Python多继承顺序实例分析,包括了Python多继承顺序实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python多继承顺序。分享给大家供大家参考,具体如下: 示例1: 运行结果: A caller B  called 示例2: 运行结果: A caller A called 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计

  • 问题内容: 考虑以下以串行/顺序方式读取文件数组的代码。返回一个promise,仅当依次读取所有文件后,promise才会解析。 上面的代码有效,但是我不喜欢必须递归使事情顺序发生。有没有更简单的方法可以重写此代码,这样我就不必使用怪异的函数了? 最初我尝试使用,但是这导致所有调用同时发生,这 不是 我想要的: 问题答案: 2017年更新 :如果环境支持,我将使用异步功能: 如果需要,可以使用异步

  • 问题内容: 首先,抱歉英语不好。我有android 2.3,所以有“真实”并行AsyncTask而不是顺序执行(android 3.0及更高版本)。我有几个AsyncTasks,它们每个都执行onPostExecute()回调(我知道它将在UI线程中执行)。假设我只有两个并行的AsyncTask,并且当第一个任务完成其工作时,将调用回调onPostExecute()。是否有可能在UI线程上运行on

  • 问题内容: 在Python中,如果您使用相同的方法定义两个类,并希望这两个类成为父类,则如下所示: 和: 当您定义子类并以A和B的顺序添加两个父类时: 调用self.method()时使用的方法是属于A的方法,即继承列表中的第一个类: 尽管在我所有的测试用例中似乎都是如此,但我无法在文档或在线中找到在任何平台和该语言实现中都可以安全使用的地方。任何人都可以肯定地说,假设列表中的第一个继承的类将始终

  • 在ElasticSearch中为多个字段指定排序顺序的最佳方法是什么?查询字符串格式似乎根本不起作用: 人们希望先按字段1排序,然后按字段2排序,但似乎只有一个字段排序正确。完整的符号效果更好,但第一个条目偶尔会出现错误的搜索顺序:

  • 问题内容: 我有一个抽象基类,用作我的单元测试(TestNG 5.10)的基础。在该类中,我将初始化测试的整个环境,设置数据库映射等。此抽象类具有一个带有注释的方法,该方法可以进行初始化。 接下来,我用具有方法和方法的特定类扩展该类。这些方法对环境进行类特定的初始化(例如,将一些记录放入数据库中)。 如何执行带注释的方法的特定顺序?我需要先执行抽象基类中的那些,然后再执行扩展类中的那些。 例: 预