其他功能完成后运行功能

时间:2017-04-15 14:43:02

标签: javascript jquery

我想在另一个函数完成后运行一个函数。我已经找到了实现它的方法,但我的问题是我想在这种情况下使用getLocation函数的输出作为更新函数的参数。

有没有办法像这样运行代码并为getLocation函数的输出分配一个变量?

function giveAddress(){
    $.getJSON('http://localhost:5000/api/stations', function(json) {
        {
            $.when($.ajax(getLocation(json))).then(function () {
                update(station);
            });
        })
    }

非常感谢任何帮助。

3 个答案:

答案 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);
     });
  })
}