代码之家  ›  专栏  ›  技术社区  ›  jameshfisher

在Javascript中,在调用回调之前暂停

  •  2
  • jameshfisher  · 技术社区  · 14 年前

    我对javascript编程的回调风格还比较陌生。 有没有办法 下面的函数接受一个数字并基于它返回一个结果。

    function get_expensive_thing(n) {
      return fetch_from_disk(n);
    }
    

    到目前为止,很简单。 fetch_from_disk 而是通过回调返回结果? 像这样:

    function get_expensive_thing(n) {
      fetch_from_disk(n, function(answer) {
        return answer; // Does not work
      });
    }
    

    return 在匿名函数的范围内, 而不是 get_expensive_thing

    有两种可能的“解决办法”,但都是不够的。 得到昂贵的东西

    function get_expensive_thing(n, callback) {
      fetch_from_disk(n, function(answer) {
        callback(answer);
      });
    }
    

    另一种是重新编码 从磁盘获取 ,但这不是一个选项。

    我们怎样才能达到预期的结果 得到昂贵的东西 从磁盘获取 调用回调,然后返回该答案?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Pointy    14 年前

    浏览器Javascript中几乎没有“等待”。都是关于回调的。记住,回调可以是“闭包”,这意味着函数的定义可以从创建局部变量的上下文中“捕获”它们。

    如果你接受这种做事方式,你会是一个更快乐的人。

        2
  •  0
  •   nathan    14 年前

    function get_expensive_thing(n) {
      return fetch_from_disk(n, function(answer) {
        return answer;
      });
    }