我想在另一个函数完成后运行一个函数。我已经找到了实现它的方法,但我的问题是我想在这种情况下使用getLocation函数的输出作为更新函数的参数。
有没有办法像这样运行代码并为getLocation函数的输出分配一个变量?
function giveAddress(){
$.getJSON('http://localhost:5000/api/stations', function(json) {
{
$.when($.ajax(getLocation(json))).then(function () {
update(station);
});
})
}
非常感谢任何帮助。
答案 0 :(得分:3)
如果你有Promises
,请不要使用回调function giveAddress(){
return $
.getJSON('http://localhost:5000/api/stations') // first request
.then(getLocation) // extract location
.then(function(location) {
return $.ajax(location)
.then(function(){return location}) // second request still return location
})
.then(update)
}
或者如果您需要使用获取location
function giveAddress(){
return $
.getJSON('http://localhost:5000/api/stations') // first request
.then(getLocation) // extract location
.then(function(location) {
return $.ajax(location)
.then(function(data){return {
location: location,
data: data}
}) // keep location and data
})
.then(function(result) {
// use result.data
update(result.location)
})
}
答案 1 :(得分:0)
你几乎就在那里,你只需要在promise data
回调函数中添加一个then
参数,然后将其传递给你的第二个函数:
function giveAddress(){
$.getJSON('http://localhost:5000/api/stations', function(json) {
{
$.when($.ajax(getLocation(json))).then(function (data) {
update(data);
});
})
}
答案 2 :(得分:0)
您唯一需要做的就是在promise .then()中获取函数getLocation返回的响应,并将其传递给更新函数
function giveAddress(){
$.getJSON('http://localhost:5000/api/stations', function(json) {
{
$.when($.ajax(getLocation(json))).then(function (response) {
update(response);
});
})
}