我有两个函数,functionA() 和 functionB(),每个函数都包含一个 $.getJSON。而且,根据 functionA() 返回的数据,functionB() 的行为会有所不同。我一直在使用:

functionA();
functionB();

但是,通过这种设置,我有时会从 functionB() 中得到一些意想不到的结果。我的想法是 functionB() 的 JSON 调用开始了,即使 functionA() 的 JSON 调用尚未完成。我对此的解决方案是将 functionB() 放在 $.getJSON 的“.done”中。虽然这有效,但我想知道是否有一种更优雅的方式来链接 functionA() 和 functionB() 以便 functionB() 在 functionA() 完全完成之前不会启动,同时我的 functionB() 调用在 functionA() 之外。

最佳答案

我建议使用 callback 语法(例如众所周知的 node.js):

functionA(functionB);

虽然您的函数采用 callback 参数:
functionA(callback){
  // do stuff

  // when ready, run:
  return callback();
};

如果您的调用变得越来越复杂,您可能需要查看库 async

10-08 15:58