Javascript承诺请求…然后返回未定义的,尽管它存在
执行以下函数时,我收到一个错误,说明:Javascript承诺请求…然后返回未定义的,尽管它存在,javascript,promise,request,Javascript,Promise,Request,执行以下函数时,我收到一个错误,说明: UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 362): TypeError: request(...).then is not a function 我不知道这个错误消息的原因,尽管我认为它与我的请求有关。根据“请求-承诺”的要求,如果格式正确,我的代码 const request = require('request-promise'); a
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 362): TypeError: request(...).then is not a function
我不知道这个错误消息的原因,尽管我认为它与我的请求有关。根据“请求-承诺”的要求,如果格式正确,我的代码
const request = require('request-promise');
addressFunction(lat,lon){
var error = "No Address Data"
var addressExist = true;
return new Promise(
function(resolve){
if(addressExist) {
let apiKey = "API-Key";
let geocodeAddress = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + lat + "," + lon + "&key=" + apiKey;
resolve(
request(geocodeAddress).then(res => {
res = JSON.parse(res);
newAddress = res.results[0].formatted_address.replace(/^\d+\s*/, '');
newAddress = newAddress.split(',', 3).join(',').replace(/[0-9]/g, '').trim()
return newAddress
})
);
}
}
);
}
}
我尝试过传递一个“选项”参数,例如
var options = {
uri: 'http://www.google.com',
transform: function (body) {
return cheerio.load(body);
}
尽管这仍然不起作用
有人知道为什么请求…然后抛出错误吗 你做错了。您需要
解析(newAddress)
而不是整个api调用承诺
function someFunction () {
return new Promise(function(resolve, reject){
if(addressExist) {
let apiKey = "API-Key";
let geocodeAddress = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + lat + "," + lon + "&key=" + apiKey;
request(geocodeAddress).then(res => {
res = JSON.parse(res);
newAddress = res.results[0].formatted_address.replace(/^\d+\s*/, '');
newAddress = newAddress.split(',', 3).join(',').replace(/[0-9]/g, '').trim()
resolve(newAddress);
}).catch(error => {
console.log(error);
resolve('some other values based on logic');
});
} else {
resolve('some other value based on logic');
}
}
);
}
避开这个!您确定您使用的是
请求承诺
而不是请求
?您使用的是哪个版本的请求承诺
?您做错了。我正在下决心@BergiThis没有解释OP的代码为什么不工作。从请求承诺
的文档中可以看出,请求(…)。那么
应该是一个函数。这个答案表明对承诺如何工作缺乏基本的理解。