javascript - making asynchronous calls with jquery - Stack Overflow

I have a function called checkStatus(x) where x is Id. How can I call this function n times asynchronou

I have a function called checkStatus(x) where x is Id. How can I call this function n times asynchronously ? Without being dependent one on another to pleted and for another to start?

I'm using jquery

EDIT:

I'm not sure if I used the correct term, but here is what I want. I have a list of ID's and I iterate trough a list, I want to execute this function for each ID.

But I don't want to wait for one id to finnish, and then to execute this function on another id. Is it possible to execute this function at the same time?

I have a function called checkStatus(x) where x is Id. How can I call this function n times asynchronously ? Without being dependent one on another to pleted and for another to start?

I'm using jquery

EDIT:

I'm not sure if I used the correct term, but here is what I want. I have a list of ID's and I iterate trough a list, I want to execute this function for each ID.

But I don't want to wait for one id to finnish, and then to execute this function on another id. Is it possible to execute this function at the same time?

Share Improve this question edited Jan 28, 2011 at 17:48 London asked Jan 28, 2011 at 17:35 LondonLondon 15.3k35 gold badges112 silver badges148 bronze badges 1
  • asynchronously to what? Page Loads? set a timer, bind it to some event ... ect. – Hannes Commented Jan 28, 2011 at 17:37
Add a ment  | 

2 Answers 2

Reset to default 6

Javascript engines are single-threaded, meaning that only one piece of code is ever executing at once. Asynchronous features (AJAX, timeouts/intervals) cause different blocks of code to run in sequence, not in parallel (i.e. you'll never get any use out of multiple processor cores in Javascript).

The simplest way to produce asynchronous (non-blocking) code is using setTimeout (I strongly discourage using setInterval), as others have suggested, but there is no performance benefit to doing so. This simply ensures that your browser won't "hang" during slow JS putations, by allowing the browser's other tasks (such as page repainting and user input) the opportunity to run. It won't actually increase the speed of those putations (in fact, it slightly slows them, due to the small additional overhead of the timeouts).

It is possible to create separate threads in Javascript using web workers, but their capabilities are limited (for example, they cannot alter the DOM) and they are not yet supported by IE.

An example of a long-running, non-blocking task using "recursive" setTimeout calls:

function getStarted(elements) {
    // this function must be inside the outer function
    // so that `i` (below) can be accessed via a closure
    function processElement() {
        // do work on elements[i] here
        // or pass it to another function

        // this continues only if we haven't hit the end of the array,
        // like the second and third clauses of a `for` loop
        if (++i < elements.length) {
            setTimeout(processElement, 0);
        }
    }

    // don't bother with empty arrays
    if (elements.length) {
        // the same `i` is used each time processElement runs
        // and acts just like a `for` loop index
        var i = 0;

        // optional: make a copy of the array so that it
        // doesn't get modified while we're working
        elements = elements.slice();

        // even a zero-millisecond "delay" gives the browser the
        // opportunity to run other code
        setTimeout(processElement, 0);
    }
}

Use the setTimeout or setInterval functions.

setTimeout(function(){checkStatus(x);}, 100);
setTimeout(function(){checkStatus(x);}, 200);
setTimeout(function(){checkStatus(x);}, 300);

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742318964a4421415.html

相关推荐

  • javascript - making asynchronous calls with jquery - Stack Overflow

    I have a function called checkStatus(x) where x is Id. How can I call this function n times asynchronou

    10小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信