【问题标题】:Angularjs .then function creating a var to pass outside .thenAngularjs .then 函数创建一个 var 传递到外部 .then
【发布时间】:2016-04-03 07:46:40
【问题描述】:

有没有办法从 .then 承诺的结果中获取数据?

我知道我发布的内容是错误的,有什么办法吗?

该指令用于检查用户是否存在于数据库中,我在 check_username.php 中编造了错误以在找到它时发送 type=1,如果不存在则返回 2。什么我正在尝试做的是显示 404 页面或实际的个人资料页面(如果找到)。这基本上就是我试图在该功能中完成的只是查找用户是否存在并显示个人资料页面或 404 并将 var 发送到“templateUrl”以将模板放置在个人资料页面中。有更好的方法吗?

app.directive('profileDirective',function($http, $stateParams){

	var promise=$http.post('../../api/functions/check_username.php', JSON.stringify($stateParams.u) );
				
		promise.then(function(msg){
			if(msg.data.type=='2'){
				results = 'responses/404.php';
			}
			else if (msg.data.type=='1') {
				results = 'partials/profile/tpl/profile.head.tpl.php?u=' + $stateParams.u;
			}
		});

	console.log(results);

});

非常感谢,谢谢

【问题讨论】:

  • 老实说,我看不出有任何用例表明这是个好主意。当你在做异步 javascript 时,你必须坚持使用异步 javascript。根据您想做什么,应该有一种异步方法。
  • 如果我明白你的要求,在promise 声明工作之前不会声明var result; 吗?
  • 我认为你可以做到,但你必须在承诺正文中发出一个事件,然后在你的指令正文中稍后捕获它几行。看起来你可以在那里访问它,但我必须同意 Clément,这是一种奇怪的做事方式。
  • 您可以将结果 returnchain 到另一个 .then 函数,但不能将其“输出”到光纤 (轻量级线程)创建了承诺。 .then 函数总是在不同的光纤上执行。但是,您可以链接这些纤维。你想达到什么目的?如果您告诉我们,我们可以为您提供帮助。
  • 此指令用于检查用户是否存在于数据库中,我在 check_username.php 中编写了错误以在找到它时发送 type=1,如果不存在则它将返回一个 2. 我想要做的是显示 404 页面或实际的个人资料页面(如果找到)。这基本上就是我试图在该功能中完成的只是查找用户是否存在并显示个人资料页面或 404 并将 var 发送到“templateUrl”以将模板放置在个人资料页面中。有更好的方法吗?

标签: javascript angularjs json dynamic dependency-injection


【解决方案1】:

正如有人已经说过的,您只需在指令范围内创建一个变量。

app.directive('profileDirective',function($http, $stateParams){

    var result;
	var promise=$http.post('../../api/functions/check_username.php', JSON.stringify($stateParams.u) );
				
		promise.then(function(msg){
			if(msg.data.type=='2'){
				result= 'responses/404.php';
			}
			else if (msg.data.type=='1') {
				result= 'partials/profile/tpl/profile.head.tpl.php?u=' + $stateParams.u;
			}
		});

	console.log(result);

});

【讨论】:

  • 这将在被安慰时返回 undefined
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 2018-09-28
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
相关资源
最近更新 更多