编辑:该函数是异步的,因此 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/