过去几天,我一直在使用openshift模块通过node.js获取所有Pod及其状态
npm i okd-api
以下是用于提取广告连播列表的代码段
aws_app.get('/fetchList', async function(req,res){
await getServices().then((allServices)=>{
console.log("allServices",allServices)
res.send(allServices)
})
.catch((err)=>{throw err;})
})
async function getServices(){
return await new Promise(async (resolve,reject)=>{
let config = {
cluster:'master openshift url',
user: 'username',
password: 'password',
strictSSL: false
}
let WMArr=[];
let resArr=[] ;
await login(config)
.then(async(okd) =>{
console.log("okd",okd)
await okd.namespace('namespaceHere')
.pod
.watch_all( async(pods) =>{
console.log("pods",pods)
await pods.map((v)=>
{
if(!WMArr.includes(v.object.metadata.labels.app))
{
let obj={"name":v.object.metadata.labels.app,"Instance":WMArr.lastIndexOf(v.object.metadata.labels.app)===WMArr.indexOf(v.object.metadata.labels.app)?1:WMArr.lastIndexOf(v.object.metadata.labels.app)+1,"Status":v.object.status.phase}
resArr.push(obj);
}
WMArr.push(v.object.metadata.labels.app);
console.log("WMArr",WMArr,"resArr",resArr)
});
})
if(resArr!==null &&resArr!== undefined&& resArr.length1==0){
resolve(resArr)
}else{
reject("not found")
}
})
.catch(err => {throw err})
})
.then((state) => {
console.log("state",state)
})
.catch((error) => {
console.log("erdfkkg",error)
});
}
我在诺言从未解决的某个地方出了错.IC,结果在console.log中 我的方法有误吗,请纠正我 有人让我知道我要去哪里错吗 我仍然无法达到目标 不管引发什么以下错误
未处理拒绝的原因:承诺承诺{'noData'}原因:未定义
aws_app.get('/fetchList', function(req,res){
getServices().then((allServices)=>{
console.log("allServices",allServices)
res.send(allServices)
})
.catch((err)=>{throw err;})
})
async function getServices(){
let arrRes=[];
try{
let prom= new Promise(async(resolve,reject)=>{
let config = {
cluster:'master openshift url',
user: 'username',
password: 'password',
strictSSL: false
}
let allpodsData= login(config)
.then(async (okd) =>{
console.log("okd",okd)
let nnn= new Promise(async(resolve,reject)=>{
okd.namespace('namespacename').pod.watch_all((pods) =>{
console.log("pods",pods)
arrRes.push(pods);
})?resolve(arrRes):reject("noData");
});
let res= await nnn;
if(res)resolve(res);
else reject("No data")
/*if(arrRes!==null &&arrRes!== undefined&& arrRes.length!==0){
resolve(arrRes);}
else reject("No data")*/
})
.catch(err => {throw err})
})
let result = await prom;
alert(result)
}
catch(err){console.log("err",err)
throw err;}
}
无论我使用async / awiat,还是答应,然后接住我都不会得到结果。 首先,诺言被拒绝,然后诺言得以解决
关注导致问题在解决之后不再返回,在解决之前返回,因此没有数据。以下内容返回了一个承诺,我不确定如何处理该承诺,任何人都可以请我帮忙
okd.namespace('namespacename').pod.watch_all((pods) =>{
console.log("pods",pods)
arrRes.push(pods);
})?resolve(arrRes):reject("noData");
我的方法是否错误,请纠正我 有人让我知道我要去哪里哪里
答案 0 :(得分:0)
检查是否可以运行,如果看到编译错误,请更正几分,
malloc
答案 1 :(得分:0)
以下作品
let fetchListarr=[];
aws_app.get('/path', async (req,res) =>
{
try
{
Promise.all(promisesArray).then(values => {
// do stuff with values here
console.log("fetchList",values);
res.send(values)
});
}
catch (e){throw e;}
});
var WMArr=[];
var prom1 = new Promise(function(resolve, reject) {
let config = {
cluster:'clusterurl',
user: 'username',
password: 'passowrd',
strictSSL: false
};
login(config)
.then(okd=>{
okd.namespace('namespace').pod.watch_all(pods=>{
pods.map((v)=> {
if(!WMArr.includes(v.object.metadata.labels.app))
{ let obj={"TargetServiceName":v.object.metadata.labels.app,"Instance":WMArr.lastIndexOf(v.object.metadata.labels.app)===WMArr.indexOf(v.object.metadata.labels.app)?1:WMArr.lastIndexOf(v.object.metadata.labels.app)+1,"Status":v.object.status.phase}
fetchListarr.push(obj);
}
WMArr.push(v.object.metadata.labels.app);
});
})
setTimeout(function() {
resolve( fetchListarr);
}, 5000);
})
.catch(err=>{throw err})
});
var promisesArray= [prom1];