javascript - Azure 移动服务 - table.read().done(function (results)) 返回未定义的值

标签 javascript angularjs cordova azure-mobile-services

编辑:该函数是异步的,因此 console.log 在数据返回之前被触发。我现在将把我的逻辑放入这个 .done() 函数中。

我试图获取结果数组并将其传递到全局变量中,但该变量在结果函数外部记录为未定义。

然而,这是我在函数内部需要的数组。

我需要在结果函数之外有一个对象数组,因为我无法在该函数内部进行调试并且需要编写大量代码

这是代码

$scope.syncContacts = function () {

        var table = AzureService.getTable('contact');
        var contactList = [];
        table.read().done(function (results) {
            contactList = results;
            for (var i = 0; i < results.length; i++) {
                console.log("Contact Object:", results[i]);
            }
            console.log('contact list is : ', contactList);
        });
        console.log("OUTSIDE FUNCTION LIST", contactList);
    };

我一直在阅读并看到一个函数 response.send(200, results) 在 azure 表中使用,但不知道它的用途是什么或我是否需要它。

最佳答案

contactList 存在变量作用域问题,您将打印外部变量,并在 Promise 中创建一个新变量来填充。

var table = AzureService.getTable('contact');
table.read().done(function (results) {
   $scope.contactList = results;
   for (var i = 0; i < results.length; i++) {
     console.log("Contact Object:", results[i]);
   }
   console.log('contact list is : ',$scope.contactList);
});

以下是 AzureService JavaScript 的官方文档:Add Mobile Services to an existing app

编辑:

由于 promise 解析,contactList 被打印为未定义。 done 方法需要一些时间才能从服务器获取数据。但是,如果您在 done 中打印它,它将按预期显示结果。您应该将此值放入 $scope 变量中,然后您可以在读取从服务器返回数据后使用它:

关于javascript - Azure 移动服务 - table.read().done(function (results)) 返回未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31358985/

相关文章:

javascript - 重置 Controller 中的表单会出现错误

data-binding - angular.js(或 knockout.js)与其他 UI 库的集成?

android - Crashlytics:上传一个 Cordova 项目

javascript - 如何将菜单的方向更改为rtl ionic2?

javascript - 如何将 javascript 重新绑定(bind)到 angular2 组件中的元素?

javascript - Bootstrap 选项卡面板 下一个 上一个 按钮

javascript - 如何在不使用引号的情况下格式化 doc.writeln

javascript - 在 AngularJS 中根据 $cookies 值确定路由模板的最佳方法是什么?

php - Phonegap 用 PHP 作为服务器端?

javascript - 调整容器的大小,两个灰色方 block 应该尽可能地增长,受对 Angular 线的约束..简单的方法吗?