Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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 异步API调用Looop_Javascript_Arrays_Node.js_Api_Asynchronous - Fatal编程技术网

Javascript 异步API调用Looop

Javascript 异步API调用Looop,javascript,arrays,node.js,api,asynchronous,Javascript,Arrays,Node.js,Api,Asynchronous,我已经编写了一个脚本,它集合了一个URL列表,我需要循环遍历每个URL,以作为API调用发送 const fs=require('fs'); const JSZip=require('JSZip'); const directoryFile=fs.readdirSync('./zipped'); const fetch=require(“节点获取”); var accessToken=“承载人”; var url='https://'; var data=JSON.stringify({“st

我已经编写了一个脚本,它集合了一个URL列表,我需要循环遍历每个URL,以作为API调用发送

const fs=require('fs');
const JSZip=require('JSZip');
const directoryFile=fs.readdirSync('./zipped');
const fetch=require(“节点获取”);
var accessToken=“承载人”;
var url='https://';
var data=JSON.stringify({“status”:“CONFIGURED”,“payloadTracingEnabledFlag”:true});
变量头2={
“内容类型”:“应用程序/json”,
“X-HTTP-Method-Override':“PATCH”,
“授权”:accessToken
};
const dir=('./压缩/');
函数buildapirls(){
新承诺((数据,错误)=>{
fs.readFile((dir+directoryFile),函数(err,data){
loadAsync(数据).then(函数)(zip){
const files=Object.keys(zip.files);
//console.log(文件);
如果(错误)抛出错误;
//console.log(文件);
返回文件
})
.然后(值=>{
const newFileArr=[];
value.forEach((文件)=>{
const pkgName=files.substring(files.indexOf(“\u0”),files.indexOf(“\u0”)+1,files.lastIndexOf(“\u0”);
const fileExt=files.split('.').pop();
常量pkgExtract=(pkgName+“+fileExt);
//console.log(pkgExtract);
if(pkgExtract!=“package.properties”){
//常量pkgExtract=(pkgName+“+fileExt);
//console.log(pkgExtract);
const split\u string=pkgExtract.split(/(\w[0-9]\)/);
const versionSlice=split_string.slice(0-6).join(“”);
versionSlice.slice(0,-4.toString();
常量nameSlice=split_字符串[0]。toString();
const name=nameSlice.slice(0,-1);
const apiDeployable=name+“|”+versionSlice;
//console.log(可部署);
//数据=((“APIDEPLOYABALE=”)+encodeURIComponent(apiDeployable);
//newFileArr.push(url+apiDeployable);
常量apirls=(url+apireployable);
//console.log(apirls);
返回apirls;
}
});
});
});
})
.catch(错误=>{
console.log(错误)
});
}
函数postApi(apirls){
const promises=async apirlcall=>{
返回等待获取(url,{method:“POST”,headers:headers2,body:data})
};
回报承诺(APIRLs);
}
postApi(buildapirls())。然后(resp=>{
const response=resp.json();
console.log(响应)

});我的解决方案基于jfriends在前一篇文章中的评论,流程如下所示:

新承诺(功能(解析、拒绝){

返回输出1
}).那么

返回输出2
}).那么

返回输出3
})。然后(fetchLoop=async()=>{
常数resArr=[];
for(){
const response=wait fetch(元素,{method:“POST”,headers:headers,body:data});
const res=等待响应;
重射推力(res);
console.log(resArr);
}
})
})

});
在这里已经回答了这个问题的大部分:,但您似乎忽略了我的答案。您当前的代码充满了各种各样的问题,尽管我们中的一些人在上一个问题中向您展示了更好的方法。我可以列出这段代码的十几个问题,所有这些问题都在我之前的回答中得到了解决。当我意识到“等等,我以前已经写过了”时,我开始写这个问题的答案。请尝试从别人给你的答案中学习,然后在另一个问题中继续使用同样有缺陷的代码。问题:简单的回调与承诺混合。不为手动创建的承诺调用
resolve()
,因此它永远不会解析,也永远不会有解析值。手动创建的承诺没有错误处理(很多地方您没有调用
reject(err))
。等等……这是否回答了您的问题?是的……我使用了jfriend提出的建议。我花了昨天大部分时间和整个周末才得到它,但我终于明白了大家对不解决任何数据的看法。最后,我将回电与承诺结合起来(这主要是因为在网上尝试了大量示例)为了让事情顺利进行。