我有一个对函数执行请求的promise函数。根据该请求的响应,有以下两种情况:
Library.prototype.method = function () {
return new Promise ( ( resolve, reject )=> {
request( options, function ( error, response, body ) {
if ( scenario 1 ) {
//do something that changes value from options and need to perform a new request
request( options, function ( error, response, body ) {
if ( response ) { resolve( true ) }
})
}
if ( scenario 2 ) {
resolve( true )
}
})
})
}
这里的情况是在对包含那些请求的promise的函数调用中,我没有获得嵌套请求resolve的值。
library.method().then( ( response )=> {
// scenario 2
console.log( response ) // true
// scenario 1
console.log( response ) // never triggered
} )
如果函数promise在方案2中结束-> promise返回true
如果功能承诺在方案1中结束->我没有收到任何响应
如何从内部请求中获取解析值?
答案 0 :(得分:0)
您的代码对我来说似乎很好,但是1)您应该查看 response.statusCode ,然后 2)错误时您应该拒绝 ...
return new Promise((resolve, reject)=>{
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
resolve(....);
} else {
reject(......);
}
});
});