Javascript Ajax异步不返回值
我被困在这一点上,谁能在这段代码上帮助我!!。。。它是一个异步点,在获取值之前返回。它试图使Javascript Ajax异步不返回值,javascript,jquery,ajax,Javascript,Jquery,Ajax,我被困在这一点上,谁能在这段代码上帮助我!!。。。它是一个异步点,在获取值之前返回。它试图使async:false,但无法获取返回值 function Routing(){ var from= document.getElementById("from").value; var to =document.getElementById("to").value; var fromcoordinates=coordinates(from); var tocoordin
async:false
,但无法获取返回值
function Routing(){
var from= document.getElementById("from").value;
var to =document.getElementById("to").value;
var fromcoordinates=coordinates(from);
var tocoordinates=coordinates(to);
console.log(fromcoordinates);
}
function coordinates(values){
var cords;
$.ajax({
url: 'https://geocoder.ls.hereapi.com/6.2/geocode.json',
type: 'GET',
dataType: 'jsonp',
async : false,
jsonp: 'jsoncallback',
data: {
searchtext: values,
gen: '9',
apiKey: 's_WF6U2g60ucHbmnYIyuieeUWnkT0jshGf4mD33kpwI'
},
success: function (data) {
var x = JSON.parse(JSON.stringify(data));
cords=[x.Response.View[0].Result[0].Location.DisplayPosition.Latitude, x.Response.View[0].Result[0].Location.DisplayPosition.Longitude];
console.log(cords);
}
});
console.log(cords);
return cords;
}
success
回调将在函数执行并返回cords
后触发。相反,您可以将坐标
包装在承诺中,然后使用承诺。所有
:
函数路由(){
var from=document.getElementById(“from”).value;
var to=document.getElementById(“to”).value;
var fromcoordinates=坐标(from);
var tocoordinates=坐标(to);
所有([fromcoordinates,tocoordinates])。然后(值=>{
//值[0]=来自
//值[1]=到
console.log(值[0]);
console.log(值[1]);
});
}
函数坐标(值){
返回新承诺((解决、拒绝)=>{
$.ajax({
网址:'https://geocoder.ls.hereapi.com/6.2/geocode.json',
键入:“GET”,
数据类型:“jsonp”,
async:false,
jsonp:'jsoncallback',
数据:{
searchtext:值,
gen:'9',
apiKey:'s_wf6u2g60uchbmnyiyuieuwnkt0jshgf4md33kpwi'
},
成功:功能(数据){
var x=JSON.parse(JSON.stringify(data));
//用坐标解决承诺
解析([x.Response.View[0]。结果[0]。位置。显示位置。纬度,x.Response.View[0]。结果[0]。位置。显示位置。经度]);
}
});
});
}
您可以发布“值”的值吗?这些是在调用坐标方法时将转换为坐标的位置名称!为什么不在success函数中返回跳线,它应该可以正常工作。@Prabhjotsinghkaint我认为在success中返回它不会有帮助。我已经运行了代码,它成功地返回了结果。Matt U我可以将返回的值保存在变量中吗?因为我想进一步使用这些值!您可以使用async/await语法,如果您可以使用该语法(例如,受支持的话),这将使它更简洁。查看MDN如果这不可用,那么如果不在任何需要的地方传递回调或返回Promise
对象,就很难做到。