簡體   English   中英

如何構建 jQuery 之類的事件?

[英]How can I build jQuery like events?

我想構建一個 function 根據結果調用一些事件處理程序,就像 jQuery 的$.ajax()一樣。 例如,您可以定義此 ajax 代碼:

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

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

我想得到這些:

.done(function(e)
    {
        //succed
    
    }

塊與我的 function 一起工作。 目前我做這樣的事情:

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);
});

感謝@arun-p-johny@hindmost為我提供了正確的關鍵字進行搜索並最終解決了我的問題

在閱讀了這篇很棒的文章后,我想出了以下解決方案:

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);
    });
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM