【问题标题】:$.Deferred() and SharePoint 2013 JavaScript CSOM$.Deferred() 和 SharePoint 2013 JavaScript CSOM
【发布时间】:2013-10-01 07:25:04
【问题描述】:

我想将 jQuery $.Deferred/promise 功能与 SharePoint JavaScript API 一起使用。 这是我想要实现的一个示例。

function getCachedSearches() {
    var dfd = $.Deferred(function () {
        var list = context
                .get_web()
                .get_lists()
                .getByTitle('CachedSearches');

        cached_searches = list.getItems('');

        context.load(cached_searches);

        context.executeQueryAsync(
           function () {
               dfd.resolve();
           },
           function (sender, args) {
               dfd.reject(args.get_message());
           }
        );
    });
    return dfd.promise();
}

function addCachedSearch(phrase) {
    var dfd = $.Deferred(function () {
        var list = context
                .get_web()
                .get_lists()
                .getByTitle('CachedSearches');

        var create_item = new SP.ListItemCreationInformation();
        var list_item = list.addItem(create_item);

        list_item.set_item('Title', phrase);

        list_item.update();

        context.load(list_item);

        context.executeQueryAsync(
           function () {
               dfd.resolve();
           },
           function (sender, args) {
               dfd.reject(args.get_message());
           }
        );
    });
    return dfd.promise();
}

function doSearch() {
    addCachedSearch($('#phrase').val())
        .then(getCachedSearches());
}

不幸的是,上面的代码没有按预期工作——第二次调用没有等待第一个承诺在执行之前得到解决。 非常感谢

【问题讨论】:

    标签: javascript sharepoint csom


    【解决方案1】:

    我想我看到了一个问题:.then() 需要一个函数引用,但您正在调用该函数并传入结果(在本例中为 Promise)。试试这个:

    function doSearch() {
        addCachedSearch($('#phrase').val())
            .then(getCachedSearches);
    }
    

    请注意,getCachedSearches 不再有 () 括号。

    只是为了好玩,这是一个 jsFiddle,其中包含您正在尝试做的事情的提炼示例:http://jsfiddle.net/UbBz3/

    【讨论】:

      猜你喜欢
      • 2021-02-27
      • 2013-03-31
      • 1970-01-01
      • 2019-07-07
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      相关资源
      最近更新 更多