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函数按顺序运行[重复]的主要内容,如果未能解决你的问题,请参考以下文章