Jquery在while循环中延迟搜索

时间:2017-10-24 14:07:14

标签: javascript jquery while-loop jquery-deferred deferred

我需要搜索多个异步查询 - 一次是500个结果(在sharepoint客户端对象模型中),最后给用户返回所有结果。

我是javascript的新手,所以我问你的建议我是如何让它工作的。 我已经为演示我需要的东西做了一个简单的例子

var results;
var promises = [];

function Search(startRow) {
    var d = $.Deferred();
    setTimeout(function() { 
        alert(startRow); 
        //results+= ... - search results for the current startRow
        d.resolve(); }, 
        3000);

    return d.promise();
}

var portion = 500;
var startRow = 0;
var rowCount = 2002;
while (rowCount > startRow + portion) {                                
    startRow += portion;
    promises.push(Search(startRow));
}

$.when.apply($, promises).then(
    function(){ 
        alert('done'); // get all search results here 
    });

所以我需要的是在搜索功能中获得正确的当前startRow

UPD:使用最后一个startRow

调用所有警报

1 个答案:

答案 0 :(得分:0)

我设法做到这一点。有没有更好的方法?

        var results;
    var promises = [];

    function Search() {
        var d = $.Deferred();
        setTimeout(function() { 
            alert(startRows[0]); 
            startRows.splice(0, 1);
            //results+= ... 
            d.resolve(); }, 
            3000);

        return d.promise();
    }

    var startRows = [];
    var portion = 500;
    var startRow = 0;
    var rowCount = 2002;
    while (rowCount > startRow + portion) {                                
        startRow += portion;
        startRows.push(startRow);
        promises.push(Search());
    }

    $.when.apply($, promises).then(
        function(){ 
            alert('done'); // get all search results here 
        });