Azure移动服务- table.read().完成(函数(结果))返回未定义的值

Azure Mobile Services - table.read().done(function (results)) returning undefined values

本文关键字:返回 结果 未定义 函数 完成 table read 移动 Azure 服务      更新时间:2023-09-26

编辑:该函数是异步的,因此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有一个变量作用域问题,你打印外部变量,并在承诺填充内创建一个新的。

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的官方文档:添加移动服务到现有的应用

编辑:

由于承诺解析,contactList未定义打印。done方法将花费一些时间从服务器获取数据。但是,如果您在done中打印它,它将显示结果,如预期的那样。您应该将此值放入$scope变量中,然后在read从服务器返回数据后使用它: