Return 使用延迟的列表项目 ID

Return list item id using deferred

如何使用如下代码return 值?我需要将值分配给任何变量。它适用于警报。但我需要检索值。

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;
}

由于该函数使用异步处理,您不能return从中获取值,而是需要使用像

这样的回调方法
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
})

另读

  • How do I return the response from an asynchronous call?