【问题标题】:How can I build jQuery like events?如何构建类似 jQuery 的事件?
【发布时间】:2014-10-27 09:17:56
【问题描述】:

我想构建一个函数,它会根据结果调用一些事件处理程序,就像 jQuery 的 $.ajax() 那样。例如你可以定义这个 ajax 代码:

$.ajax(
{
    url: "http://domainname.tld",
    type: 'GET'
}).done(function(e)
{
    //succed

}).fail(function(e)
{
    //error
});

我想要这些

.done(function(e)
    {
        //succed

    }

使用我的功能的块。目前我做这样的事情:

function SendRequest(arg1, arg2, onSuccess, onError)
{
    if(true)
    {
        onSuccess(true);
    }
    else
    {
        onError(false);
    }
}

必须这样称呼它

SendRequest("someArg1", "someArg2", function(returnValue) { alert(returnValue); }, function(returnValue) { alert(returnValue); });

并且想这样称呼它:

SendRequest("someArg1", "someArg2")
.onSuccess(
    function(returnValue)
    {
        alert(returnValue);
    })
.onError(function(returnValue)
{
    alert(returnValue);
});

感谢您为我指明正确的方向!

【问题讨论】:

标签: javascript jquery javascript-events event-handling


【解决方案1】:

感谢@arun-p-johny@hindmost 为我提供了正确的关键字进行搜索并最终解决了我的问题!

阅读this 很棒的文章后,我想出了以下解决方案:

function AsyncMethod(arg1, arg2)
{
    var deferred = $.Deferred();

    //Do your work
    if(arg1 == arg2)
    {
        // true represents the result, optional
        deferred.resolve(true);
    }else{
        // Something went wrong, reject. (false is still the result, therefor it's also optional)
        deferred.reject(false);
    }

    return deferred.promise();
}

并这样称呼它:

$.when(
    AsyncMethod(true, false)
    .done(function (returnValue)
    {
        alert(arg1 + " == " + arg2);
    })

    .fail(function (returnValue)
    {
        alert(arg1 + " != " + arg2);
    });
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多