Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对于使用fetch api的异步请求,这是正确的语法吗?_Javascript_Fetch Api - Fatal编程技术网

Javascript 对于使用fetch api的异步请求,这是正确的语法吗?

Javascript 对于使用fetch api的异步请求,这是正确的语法吗?,javascript,fetch-api,Javascript,Fetch Api,我正在使用FetchAPI发出多个post请求。但是当我运行这段代码时,任何一个请求都会失败。这两个请求分别运行良好。下面是代码。这是使用FetchAPI发出多个post请求的正确方法吗 let req1 = fetch("http://localhost/hplus/statelist", { method : "post", headers : { "Accept" : "application/json", "Content-type" : "application/x-w

我正在使用FetchAPI发出多个post请求。但是当我运行这段代码时,任何一个请求都会失败。这两个请求分别运行良好。下面是代码。这是使用FetchAPI发出多个post请求的正确方法吗

let req1 = fetch("http://localhost/hplus/statelist", {
method : "post",
headers : {
    "Accept" : "application/json",
    "Content-type" : "application/x-www-form-urlencoded"
},
body : ""
}).then(res => res.json());

let req2 = fetch("http://localhost/hplus/citylist", {
method : "post",
headers : {
    "Accept" : "application/json",
    "Content-type" : "application/x-www-form-urlencoded"
},
body : "stateid=1"
}).then(res => res.json());

Promise.all([req1, req2]).then(val => console.log(val));
这部分已经返回了一个承诺

当您附加
.then()
部分时,将返回已解析承诺的结果。所以,
fetch(某物)。那么(某物)
不是承诺

承诺。所有([承诺列表])都需要有承诺部分

这是你需要做的事情

let req1 = fetch("http://localhost/hplus/statelist", {
method : "post",
headers : {
    "Accept" : "application/json",
    "Content-type" : "application/x-www-form-urlencoded"
},
data : ""
});

let req2 = fetch("http://localhost/hplus/citylist", {
method : "post",
headers : {
    "Accept" : "application/json",
    "Content-type" : "application/x-www-form-urlencoded"
},
body : "stateid=1"
});

Promise.all([req1, req2]).then(val => console.log(val));

“失败”是什么意思?您得到了什么错误?什么是
localhost/hplus/citylist
,它运行的是什么服务器?它是否正确处理并发请求?失败意味着无法将数据发布到服务器,并返回未定义的索引@Bergilocalhost/hplus/citylist是本地服务器URL。应用程序正在XAMPP服务器上运行。代码在我看来没有问题。您有权访问服务器的代码或日志吗?检查它是否同时收到这两个请求,以及它如何响应每一个请求。您的服务器可能在短时间内遇到两个请求的问题,您希望在服务器端解决此问题。但我需要一个结果部分,而不是PromisePromise.all([req1,req2])。然后(val=>console.log(val));val是这里的结果,其中val[0]是req1的结果,val[1]是Req2的结果。我想指出,这种解释是不正确的<代码>附加.then()部分时,将返回已解析承诺的结果。因此,获取(某物)。然后(某物)不是承诺。这是不真实的:当你将
。然后
。捕获
等链接到承诺时,结果是一个新的承诺。如果您在处理程序中返回的任何内容尚未包含在新承诺中,那么它将自动包装在新承诺中(但是,
res.json()
无论如何已经包含在新承诺中)。
let req1 = fetch("http://localhost/hplus/statelist", {
method : "post",
headers : {
    "Accept" : "application/json",
    "Content-type" : "application/x-www-form-urlencoded"
},
data : ""
});

let req2 = fetch("http://localhost/hplus/citylist", {
method : "post",
headers : {
    "Accept" : "application/json",
    "Content-type" : "application/x-www-form-urlencoded"
},
body : "stateid=1"
});

Promise.all([req1, req2]).then(val => console.log(val));