开发者

Javascript Callback Async Ajax YUI 3

I'm trying to reduce code and simplify somethings by having a reusable method for making async ajax calls. I'm actually switching to YUI 3 from jQuery and cleaning stuff up in the process. This is probably super easy for you javascript guys to spot, but I've been trying to figure out how I can get my callback called without leaking memory. If I watch IE in Task Manager memory goes up very fast (the function is called every 1.5 seconds).

Basically, I have my normal web page that has the function I want called after the ajax completes. I'm updating the UI from there and setting other variables that are only part of the page. I have a javascript file where I'm putting the method that actually makes the ajax call. When I use the callback that I'm passing into that method it's leaking.

javascript file:

function doAjaxRequest(url, callback) {
    YUI().use('io',
        function (Y) {
            var cb =
            {
                timeout: 5000,
                on: {
                    success: function (x, o) {
        开发者_C百科                callback(o.responseText);
                    },
                    failure: function (x, o) {
                        callback("");
                    }
                }
            }

            Y.io(url, cb);
        });
}

web page:

doAjaxRequest(myUrl, showContent); // Called every couple seconds

        function showContent(o) {
            document.getElementById('ajaxcontent').innerHTML = o;
            // Other Stuff Removed    
        }

If I comment out the callback line it doesn't leak. I must have to make the callback another way, I just don't know what that is.


The problem is that you are creating a new YUI instance with each call to doAjaxRequest. Structure your code like this instead:

YUI().use('io', function (Y) {
function doAjaxRequest(url, callback) {
    // ...
}

window.doAjaxRequest = doAjaxRequest;
});

This will create only one YUI instance.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜