将函数作为参数传递给.get方法并稍后执行

时间:2017-02-02 18:22:21

标签: javascript jquery

我正在尝试使用jQuery的GET方法获取JSON数据。我试图将一个函数作为参数传递给GET方法并在之后执行它。由于GET方法可以将函数作为参数,我尝试调用函数,但是收到错误。我想我明白概念错了吗?

HTML

<button class="euro">Euro</button>

JavaScript (使用jQuery库):

<script>

$(function() {
  $('button.euro').click(function() {
    $.get('http://api.fixer.io/latest', myfun(data));

    function myfun(data) {
      $('#output').text(data.rates.INR);
    }
  });
});

</script>

3 个答案:

答案 0 :(得分:0)

您是否有任何特殊原因需要传递名称功能而不是匿名? 以下构造将在调用完成后执行函数。

camera.position.z = FRUSTUM_SIDE/2;

您也可以使用.done(function(){})来链接函数。

答案 1 :(得分:0)

您要做的是要执行回调功能

在异步过程完成后调用回调函数(例如从服务器获取数据)

您可以使用匿名函数让生活更轻松:

$(function() {
  $('button.euro').click(function() {
    $.get('http://api.fixer.io/latest', function(data){
      $('#output').text(data.rates.INR);
    });
  });
});

或者如果你坚持按照自己的方式去做,可以在回调中调用你的函数

你可以这样做:

$(function() {
  $('button.euro').click(function() {
    $.get('https://api.fixer.io/latest', function(data) {
       myfun(data)
    });
  });  
});

function myfun(data) {
   alert(data.rates.INR);
}

答案 2 :(得分:0)

概念是:JavaScript是一种异步语言。这意味着第二个功能不会等待任何其他功能(或过程)完成。事件发射器并行发出进程并侦听已完成的进程以运行....

使用回调函数(不可读代码)并不是现在存在的好方法。 Yo可以使用Promises或Generators编写这部分代码。这取决于你的口味。 (http://blog.mgechev.com/2014/12/21/handling-asynchronous-calls-with-es6-javascript-generators/