Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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中有2个API调用_Javascript_Node.js_Rest_Api_Asynchronous - Fatal编程技术网

一个JavaScript中有2个API调用

一个JavaScript中有2个API调用,javascript,node.js,rest,api,asynchronous,Javascript,Node.js,Rest,Api,Asynchronous,目前,我正在尝试在1个java/nodejs脚本中一个接一个地进行2个不同的api调用。第一个函数成功运行后,第二个函数出现以下错误: FetchError:请求失败,原因:套接字挂起; 键入:“系统”, errno:'Econreset', 代码:“EconReset” 以下是我迄今为止尝试的代码片段: const fetch=require(“节点提取”); const formData=require(“表单数据”); 常数fs=要求(“fs”); //const express=要求(“

目前,我正在尝试在1个java/nodejs脚本中一个接一个地进行2个不同的api调用。第一个函数成功运行后,第二个函数出现以下错误:

FetchError:请求失败,原因:套接字挂起; 键入:“系统”, errno:'Econreset', 代码:“EconReset”

以下是我迄今为止尝试的代码片段:

const fetch=require(“节点提取”);
const formData=require(“表单数据”);
常数fs=要求(“fs”);
//const express=要求(“express”);
var apiName=“”;
var lookupName=“”;
var accessToken=“承载人”;
var url='';
var url2=';
变量头={
“接受”:“应用程序/json”,
“授权”:accessToken,
};
const form=new formData();
const buffer2=fs.readFileSync(lookupName);
const buffer=fs.readFileSync(apiName);
const uploadAPI=函数uploadAPI(){
表单。追加(“内容类型”、“应用程序/八位字节流”);
append('file',buffer);
获取(url,{method:'POST',headers:headers,body:form})
。然后(数据=>{
console.log(数据)
})
.catch(错误=>{
console.log(错误)
});
};
const uploadLookup=函数uploadLookup(){
表单。追加(“内容类型”、“应用程序/八位字节流”);
form.append('file',buffer2);
获取(url2,{method:'PUT',headers:headers,body:form})
。然后(数据=>{
console.log(数据)
})
.catch(错误=>{
console.log(错误)
});
};
如果(!apiName!==true){
uploadAPI()
}else{}
如果(!lookupName!==true){
log(“上传查找文件”);
uploadLookup()
}else{}

我尝试使用一个“setTimeout”函数,它似乎不像我希望的那样工作。我最好的猜测是每个API调用都需要它自己的独立套接字连接?如果您能帮我找到正确的方向,我们将不胜感激。

这是一个巧妙的用法。我会用它来做工具让它工作。目前,使用“Promise.all”仍然只执行第一个asnyc API调用,然后在第二个调用中出现错误,与我在原始帖子中发布的消息相同。您在此处使用的
res
是不正确的。在本例中,
res
将是两个
fetch()
操作的结果数组。当
res
是数组时,不能执行
res.json()。
Promise.all([
    fetch(url),
    fetch(url2)
]).then(function (res) {
        // Get a JSON object from each of the responses
        return res.json();
    }).then(function (data) {
        // do something with both sets of data here
        console.log(data);
    }).catch(function (error) {
        // if there's an error, log it
    });