我只想返回1并在指定位置返回0。我查看了很多来源,但无法解决这个问题。
以下是代码:
exports.getLatLng = function(row){
var attractionId = row['attractionid'];
var attractionName = row['attractionname'] + ' ' +
row['Destination_name'];
var googleMapsResults;
return googleMapsClient.geocode({address: attractionName}).asPromise()
.then((response) => {
googleMapsResults = response.json.results[0];
// console.log(googleMapsResults);
model.dumpIntoMongo(attractionId, googleMapsResults);
// var y=tmp[0];
var latitude = googleMapsResults.geometry.location.lat;
var longitude = googleMapsResults.geometry.location.lng;
row["id"] = parseInt(attractionId);
// delete row['attractionid'];
delete row['destination_id'];
delete row['destination_name'];
delete row['attraction_id'];
delete row['success'];
// row["lat"] = latitude;
// row["lon"] = longitude;
row["latlon"] = latitude.toString() + "," + longitude.toString();
exports.indexIntoSolr(row);
return 1; //return 1
})
.catch((err) => {
console.log(err);
return 0; // return 0
});
}
答案 0 :(得分:0)
该方法返回一个待处理的promise,直到它解析为止。要获得值,您需要附加一个值:
getLatLng(row).then( result => {
console.log( result );
});
这肯定会显示0
或1
,因为getLatLng
的内部实现看起来正确处理了两个执行路径。
答案 1 :(得分:0)
如果您想要另一个更清晰的实施,可以参考这个。
这里,首先编写一个函数,在某些计算后返回一些数据作为promise:
function getSomething(credentials) {
const {
name
} = credentials;
return new Promise((resolve, reject) => {
if(everything_as_expected){
return resolve(some_data)
}
else if(some_error){
return reject(error);
}
});
}
要处理函数返回的结果/数据(承诺),请调用上一个函数:
getSomething(credentials)
.then((message) => {
console.log(`${message} got after success.`);
})
.catch((error_message) => {
console.log(error_message);
});