Node.js 调用RESTAPI,直到通过Promise获得成功为止
我正在调用一个api来监视响应的状态。我必须一直调用api,直到响应状态成功。我打电话来 我正在从另一个js文件调用getHeader函数,以从API get调用获取响应。我必须一次又一次地调用api,直到结果成功。但是,当状态更改为successfull时,函数停止并不返回resolve。我认为每次我调用函数时,都会创建一个新的承诺,并且它无法返回resolve 有人能帮我吗Node.js 调用RESTAPI,直到通过Promise获得成功为止,node.js,api,promise,Node.js,Api,Promise,我正在调用一个api来监视响应的状态。我必须一直调用api,直到响应状态成功。我打电话来 我正在从另一个js文件调用getHeader函数,以从API get调用获取响应。我必须一次又一次地调用api,直到结果成功。但是,当状态更改为successfull时,函数停止并不返回resolve。我认为每次我调用函数时,都会创建一个新的承诺,并且它无法返回resolve 有人能帮我吗 *import Promise from 'bluebird' var requestPromise = Promis
*import Promise from 'bluebird'
var requestPromise = Promise.promisifyAll(require('request'))
var instance;
const MonitorResponse = class {
constructor() {
if (instance) {
return instance;
}
instance = this;
}
/**
*
*/
getHeader(authToken,statusHeader) {
console.log(" Successeded Get Geader " + statusHeader + " " +authToken );
return new Promise(function (resolve, reject) {
var self=this;
var options = {
method: 'GET',
rejectUnauthorized: false,
strictSSL: false,
url: statusHeader,
headers: {
'Authorization': 'Bearer ' + authToken,
},
json:true
};
requestPromise.getAsync(options)
.then(function (headerResponse) {
console.log("Response Get Header " + JSON.stringify(headerResponse));
var state = headerResponse.body.state;
console.log("Response Get Header state " +state );
if(state=="SUCCESSFUL")
{
return resolve(" from loop ");
}
else{
self.getHeader(authToken,statusHeader);
console.log(" After recursion state " +state );
}
})
.catch(function (error) {
return reject(error)
});
}.bind(this));
}
}
module.exports = MonitorResponse*
预期结果是获得返回解析(“来自循环”);当调用getHeader函数时。请避免!我能够解决这个问题。我在里面创建了一个嵌套函数。我没有调用getHeader函数,而是调用嵌套函数,这样可以避免每次创建新的承诺,从而能够返回resolve对象。谢谢