你能等待javascript回调吗?

我试图使用http://abeautifulsite.net/notebook/87的jQuery警报对话库,而不是默认警报(在我看来看起来很可怕)。这似乎是一个很棒的库,但是没有一个如何使用jConfirm库的例子。

我需要这样做:

function confirm() {
        var result = false;
        var response = false;
        jConfirm('are you sure?', 'Confirmation Dialog',
          function(r) {
            result = r;
            response = true;
            return r;
        });
        if (response == true) {
            alert(result);
            return result;
        }
        else {
            //wait for response
            alert('hi');
        }
    }

和我的电话从我的.net按钮:

我已经在插件的网站上发布了一个评论(就在今天早上),Google已经搜索到了javascript,并等待回调完成,没有任何结果。

任何关于如何正确使用回调以获取结果的想法,在JavaScript的其余部分执行之前?

谢谢。

jConfirm('are you sure?', 'Confirmation Dialog',
    function(r) {
        result = r;
        response = true;
        return r;
    }
);
if (response == true) {

这导致了使用异步代码发生的事件序列的误解。只是因为你已经写入内联并不意味着它会严格按照上下方式执行。

> jConfirm被调用,接收函数作为其参数之一,它记住它。
> jConfirm在页面上显示其UI并立即返回。
>执行’if(response == true)’行。真的这应该只是读’if(response)’,布尔比较是多余的。但无论如何,反应当然是错误的。您的功能放弃并退出,控制回浏览器。
>用户点击jConfirm的UI。
> jConfirm只是现在跳转到行动,并回调你给它的功能,并在之前记得。
>你的嵌套函数设置响应true,对于’if(response == true)’条件来说,这样做太晚了。

你已经写了“//等待响应”作为替代,但是没有可以编写的JavaScript代码实际上会这样做。您的功能必须返回以控制回浏览器,然后浏览器才能触发jConfirm UI上的点击事件,从而进行处理。

存在使异步代码在同步上下文(反之亦然)中工作的方法 – 特别是线程和协同程序(及其有限关系生成器)。但是JavaScript没有这些功能,所以您必须编写代码以适应库正在使用的同步或异步模型。

http://stackoverflow.com/questions/436608/can-you-wait-for-javascript-callback

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:你能等待javascript回调吗?