Javascript函数按顺序运行[重复]

Posted

技术标签:

【中文标题】Javascript函数按顺序运行[重复]【英文标题】:Javascript function run with order [duplicate] 【发布时间】:2019-08-09 18:21:33 【问题描述】:

我在订购我的功能时遇到了一些问题。

我有 2 个功能。其中两个向http请求。

什么场景?

在第一次请求时我得到一些响应,在这个响应中我得到一些字符串并将其设置为某个变量。

在第二个请求中,我将此字符串添加到我的请求 url。

但是当我设置我的变量时,我的第二个请求在那之前在第一个请求响应中工作。

因为我得到了我的变量的未定义值。

我知道这是同步、异步问题,但我该如何解决这个问题?

这是我的变量,我将在第二个请求 url 的末尾添加。

var urlString = '';

这是我的第一个要求:

var requestone = new XMLHttpRequest();
requestone.onload = function () 
    if (requestone.status >= 200 && requestone.status < 300) 
        var data = requestone.response;
        data = JSON.parse(data);
        urlString = data.Key
     else 
        console.log('fail')
    
;

requestone.open('GET', 'apiurl');
requestone.send();

这是我的第二个要求:

var requesttwo = new XMLHttpRequest();
    requesttwo.onload = function () 
        if (requesttwo.status >= 200 && requesttwo.status < 300) 
            var data = requesttwo.response;

         else 
            console.log('fail')
        
    ;

    requesttwo.open('GET', 'apiurl' + urlString);
    requesttwo.send();

【问题讨论】:

使用 javascript Promises 或 async/await 【参考方案1】:

您可以通过 2 种方式执行此操作,使用 promise,或者将第二个请求集成到 request1 中:

var requestone = new XMLHttpRequest();
requestone.onload = function () 
    if (requestone.status >= 200 && requestone.status < 300) 
        var data = requestone.response;
        data = JSON.parse(data);
        requesttwo.open('GET', 'apiurl' + data.Key);
        requesttwo.send();
     else 
        console.log('fail')
    
;

requestone.open('GET', 'apiurl');
requestone.send();

【讨论】:

在第一个请求成功时发送它。谢谢

以上是关于Javascript函数按顺序运行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何编写按字母顺序组织数据的 Java 或 Javascript 程序?

返回promises的Javascript顺序函数

java按字母顺序排序[重复]

JavaScript 函数拒绝按顺序执行

java - 如何按顺序遍历地图[重复]

按顺序可重复迁移