【发布时间】:2019-03-31 08:50:22
【问题描述】:
我来自嵌入式 C 背景,并且在 AngularJs 1.x 中自学成才;我怀疑我的问题是一个通用的 JS 问题,而不是 AngularJs 特定的问题。
我发现这种模式在我的代码中重复出现:
$http.get(url)
.success(function(data, status, headers, config)
{
console.log('Success');
});
})
.error(function(data, status, headers, config)
{
console.error('Error !');
});
作为一个 C 人,我不喜欢 lambda,尽管我对回调很满意。
成功和失败部分的代码可能非常大,这会使代码看起来很混乱——尤其是看到所有这些代码都作为参数传递。
我猜$http 的参数是(a)promise(s)。
有没有什么方法可以让代码更模块化,更容易阅读和维护?
例如,我想我可以声明一些成功/失败函数并调用它们,类似于:
function it_succded(data, status, headers, config))
{
console.log('Success');
});
function it_failed(data, status, headers, config)
{
console.error('Error !');
});
$http.get(url)
.success(function(data, status, headers, config)
{
it_succded(data, status, headers, config))
});
})
.error(function(data, status, headers, config)
{
it_failed(data, status, headers, config)
});
});
当然,我可以编写代码并查看,但在这里提问是因为我想学习,并希望得到真正了解这一点的人的解释,最好是专业编写 (Angular)Js 代码的人。
【问题讨论】:
-
见docs.angularjs.org/api/ng/service/$http; $http 方法 return 承诺,参数有一个字符串。我不知道成功和失败的方法是什么,promise 有 then 和 catch。这些参数是回调函数,是的,您可以提取它们(但是
function(args) { callback(args); }除了吞下任何返回值之外没有其他任何作用;只需传递callback)。 -
.success 语法在 Angular v1.4.3 之前是正确的。在此处查看旧文档:code.angularjs.org/1.4.3/docs/api/ng/service/$http
标签: javascript angularjs promise angular-promise