相关疑难解决方法(0)

将Deferred数组传递给$ .when()

这是一个人为的例子:http://jsfiddle.net/adamjford/YNGcm/20/

HTML:

<a href="#">Click me!</a>
<div></div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

function getSomeDeferredStuff() {
    var deferreds = [];

    var i = 1;
    for (i = 1; i <= 10; i++) {
        var count = i;

        deferreds.push(
        $.post('/echo/html/', {
            html: "<p>Task #" + count + " complete.",
            delay: count
        }).success(function(data) {
            $("div").append(data);
        }));
    }

    return deferreds;
}

$(function() {
    $("a").click(function() {
        var deferreds = getSomeDeferredStuff();

        $.when(deferreds).done(function() {
            $("div").append("<p>All done!</p>");
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

我想要"全部完成!" 在所有延迟任务完成后$.when()出现,但似乎不知道如何处理Deferred对象数组."全部完成!" 首先发生的是因为数组不是Deferred对象,所以jQuery继续并假设它刚刚完成.

我知道可以将对象传递给函数,$.when(deferred1, deferred2, ..., deferredX) …

javascript jquery argument-passing jquery-deferred .when

439
推荐指数
6
解决办法
11万
查看次数

使用jquery通过ajax回调循环

我正在尝试循环使用具有相同命名约定和结构的3个不同json文件的ajax调用(但数据略有不同).自从我在论坛中阅读Alnitak的回复(jQuery ajax成功回调函数定义)以来,我一直在使用延迟对象而不是成功选项,这样我的ajax处理和回调处理就可以解耦了.以下是我的代码:

<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=ISO-8859-1" />

<title>Stuff</title>
<script src="jquery-1.9.1.min.js" type="text/javascript"></script> 
</head>

<body>
<script Language="JavaScript">

    var myData = [];
    var myURL =  ["ticker1.json","ticker2.json","ticker3.json"];    //New Array for my URLs

    function getData(m) {

        return $.ajax({
            url : myURL[m],  //<<<---Want to loop through this array
            type : 'GET',
            dataType: 'json'
        });

    }

    function handleData(data){

        for (var i=0; i<data.test.msgOne.length; i++){
            myData[i] = data.test.msgOne[i];
        }

    };



    for (var j=0; j<3; j++){

        console.log(j);  //<<---First console statement
        var ajaxCall = getData(j).done(handleData);

        $.when(ajaxCall).done(function(){ //wait until …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery

7
推荐指数
1
解决办法
2144
查看次数