使用延迟返回列表项ID

时间:2015-02-17 05:19:34

标签: jquery sharepoint deferred

如何使用如下代码返回值?我需要将值赋给任何变量。它适用于警报。但我需要检索价值。

function getLookupIDValue(criterium, list) {
    var promise = execCamlQuery(criterium, list);
    var value;
    promise.done(
        function (criteriumCollectionListItem) {
            var criteriumListItemEnumerator = criteriumCollectionListItem.getEnumerator();
            while (criteriumListItemEnumerator.moveNext()) {
                var criteriumListItem = criteriumListItemEnumerator.get_current();
                value = criteriumListItem.get_id();
            }
        }).fail(function (sender, args) {
        }
    );
    return value;
}

1 个答案:

答案 0 :(得分:0)

由于该函数使用异步处理,您无法从中返回值,而是需要使用回调方法,如

function getLookupIDValue(criterium, list, callback) {
    var promise = execCamlQuery(criterium, list);
    var value;
    promise.done(function (criteriumCollectionListItem) {
        var criteriumListItemEnumerator = criteriumCollectionListItem.getEnumerator();
        while (criteriumListItemEnumerator.moveNext()) {
            var criteriumListItem = criteriumListItemEnumerator.get_current();
            value = criteriumListItem.get_id();
        }
        callback(value)
    }).fail(function (sender, args) {});
    return value;
}

getLookupIDValue(criterium, list, function (value) {
    //do the operations that depends on value here
})

同时阅读