【问题标题】:Chaining asynchronous methods in JavaScript在 JavaScript 中链接异步方法
【发布时间】:2011-03-28 08:26:39
【问题描述】:

我想做这样的事情:

var res = myAjax.post();

myAjax 基本上是我自己的 ajax 包装器(异步)。我不需要链接,但我希望能够进行如上所示的调用。我希望由对象本身处理回调。我读过异步方法队列,但老实说,不能完全理解它。我知道我可以使用同步 ajax 调用,但如果我理解正确的话,也应该可以异步调用。非常感谢任何帮助。谢谢。

【问题讨论】:

  • 你的问题没有多大意义。您正在描述一种同步安排,但您说您希望调用是异步的。它只能是其中之一。
  • “如果我理解正确,它应该也可以异步执行” --> 你没有。
  • JQuery 这样做应该是可能的。如果您认为不可能,请阅读此内容:dustindiaz.com/async-method-queues 这篇文章的问题是我没有完全理解它...
  • @Marius:这篇文章是关于函数链的,不是关于赋值的。
  • 哦...所以他们仍然异步运行并立即返回?

标签: javascript method-chaining


【解决方案1】:

我已经完成了一个演示 here,这可能与您的意思差不多...

在那个演示中,有两种类型的对象:MyAjax,它具有上面的“post”方法,以及一个带有 getData 方法的 MyRes 对象,它将返回 null,直到异步调用成功完成。完成后,它将返回从 ajax 调用中获取的数据。

在演示中,我有一个函数每秒检查一次响应,但是post 方法还处理一个回调,它允许您在 ajax 调用成功完成时收到通知。

我不知道为什么你想这样做,但这是可行的。

【讨论】:

  • 感谢您的演示。可能有几种方法可以做到这一点,但我想它仍然不一样。为了回答您的问题,我只是想减少编写 ajax 调用所需的代码量——仅此而已。很多回调只是把代码弄得乱七八糟,所以我想我可以把它清理一下。
猜你喜欢
  • 2016-12-26
  • 2015-12-15
  • 2021-09-15
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多