jQuery Deferred and promise-错误:对象没有't支持属性或方法'然后'

jQuery Deferred and promise - Error: Object doesn't support property or method 'then'

本文关键字:支持 属性 然后 方法 promise- and Deferred 错误 对象 jQuery      更新时间:2023-09-26

我可能遗漏了一些非常基本的东西,但我似乎找不到错误,这让我很沮丧。我只是想从我的开发SharePoint网站上提取列表(然后是项目,但每次一件事)。

我已经构建了第一个延迟方法,控制台日志显示它完成了,但随后我得到了"错误:对象不支持属性或方法'then'",就好像jQuery以某种方式失败了一样。

为了参考,我试图遵循这里描述的方法:http://www.shillier.com/archive/2013/03/04/using-promises-with-the-javascript-client-object-model-in-sharepoint-2013.aspx

这是代码:

<script src="jquery-1.11.2.js"></script>
<script type="text/javascript">
    $(function () {
        GetSiteLists.bListsGotten().then(
            function (oWebLists) {
                // Get Lists Succeeded
                alert('Lists Retrieved');
            }
            , function (sender, args) {
                // Get Lists Failed
                alert('Lists Not Retrieved');
            }
        );
    });
    GetSiteLists = function () {
        var bListsGotten = function () {
            var deferred = $.Deferred();
            var oContext = new SP.ClientContext.get_current();
            console.log('oContext instantiated');
            var oWeb = oContext.get_web();
            console.log('oWeb instantiated');
            this.oWebLists = oWeb.get_lists();
            console.log('oWebLists command set');
            oContext.load(this.oWebLists);
            console.log('context load command set');
            oContext.executeQueryAsync(
                Function.createDelegate(this,
                    function () { deferred.resolve(this.oWebLists); }),
                Function.createDelegate(this,
                    function (sender, args) { deferred.reject(sender, args); }));
            console.log('list retrieval query executed async');
            console.log('returning promise');
            return deferred.promise;
        }
        return {
            bListsGotten: bListsGotten
        }
    }();
</script>

promise是一个函数,您没有调用它。

return deferred.promise()

会解决的。