我有一个角度控制器功能。
在控制器末尾调用 console.log()
。这是一个可以查看数据的函数。
scope.asyncInit = function() { scope.phoneData; dsc.In('module-agreements-lists').run('select_agreements_by_value').now('phone').then(function(res) { scope.phoneData = res.result; }); };
我应该从数据库返回数据并将其作为scope.phoneData变量。
问题在于,当我像这样使用它时:
scope.asyncInit = function() { scope.phoneData; dsc.In('module-agreements-lists').run('select_agreements_by_value').now('phone').then(function(res) { scope.phoneData = res.result; console.log(scope.phoneData); }); };
它显示从控制台日志中的服务器返回的数据,但它们在scope.asyncInit
之外不可见。
以下代码中的控制台日志返回到控制台日志scope.phoneData为undefined。
scope.asyncInit = function() { scope.phoneData; dsc.In('module-agreements-lists').run('select_agreements_by_value').now('phone').then(function(res) { scope.phoneData = res.result; }); console.log(scope.phoneData); };
我错过了重要的事情吗?我不知道为什么它不能正常工作。
答案 0 :(得分:1)
这是因为这是一个异步调用 对服务器的异步调用只会运行,而不是等待成功 所以代码继续,即使你还没有得到数据。
您使用.then()
函数来执行您希望在成功后调用的内容。
这就是为什么它在第二种方法中记录'undefined'
的原因。数据尚未从服务器到达。