【发布时间】:2014-03-31 02:43:00
【问题描述】:
我一直在尝试获得一个不那么复杂的链接解决方案,这就是我想出的: http://jsfiddle.net/mithun_daa/fEGsj/2/
它似乎有效,但是当我多次调用“myapp”时:
//call the success callback
$('#ph').text(window.myapp.doWork(true).success(onSuccess).error(onSuccess));
//call the error callback
$('#ph').text(window.myapp.doWork(false).success(onSuccess).error(onError));
回调被立即调用。我正在尝试找到一个香草 JS 解决方案。我知道 jQuery 提供了 Promise,但我只是想知道如何在纯 JS 中做到这一点。
【问题讨论】:
-
您的异步调用未将成功/错误回调的返回值附加到 div,仅供参考。这在具有异步方法的链中根本是不可能的。
-
是的,我解决了这个问题,但我没有将它记录到控制台。那是我之前尝试的东西的遗留物。我更新了小提琴及其链接以反映更改。
-
啊,对不起。就小提琴中的内容而言,由于两种情况都有 2 秒的延迟,因此它们同时发生是有意义的(这就是我所看到的)。问题到底是什么? jsfiddle.net/fEGsj/4 您的代码似乎可以正常工作
-
可能只是我对 setTimeout 的理解不够,但我假设当第二次调用时,会再暂停 2 秒。不会是这样吗?如果进行真正的 ajax 调用,这会正常工作吗?
-
正确,事实并非如此。由于您以相同的延迟同时启动它们,因此它们将同时完成。 ajax 也是如此,请记住,ajax 请求不会总是按照它们开始的顺序完成。