从jQuery转换几年后,我正在学习AngularJS。还有一些更直观。有些不是很多:)。
我正在努力使我对promise的使用有所了解,尤其是在与$ http一起使用$ q的情况下,我找不到关于这两个组合的太多信息。
为什么我要使用promise代替成功/错误回调?它们都在现实中利用了回调,那么为什么将诺言视为更好呢?例如,我可以设置get(...)
如下功能:
function get(url, success, error) {
success = success || function () {};
error = error || function () {};
$http.get(url)
.success(function (data) {
success(data);
})
.error(function (error) {
error(error);
});
}
get('http://myservice.com/JSON/',
function () {
// do something with data
},
function () {
// display an error
}
);
哪个好(?),因为它使我可以完全控制正在发生的事情。如果我打电话,get(...)
那么无论在何处,我都可以控制任何成功/错误get
。
如果将其转换为使用promise,则会得到:
function get(url) {
return $http.get(url)
.then(function (data) {
return data;
},
function (error) {
return error;
});
}
get('http://myservice.com/JSON/')
.then(function (data) {
// do something with data
});
// cannot handle my errors?
我同意,这简明扼要。我们也不必显式担心成功/错误回调,但是我似乎一开始就无法控制我的错误回调-因为我无法配置第二个回调来处理错误。
这意味着,如果我在可被多个控制器使用的服务中使用此功能,则无法更新UI来警告用户错误。
我想念什么吗?为什么会优先选择诺言?我找不到一个例子说明为什么。
通常,您将使用回调处理Javascript中的异步任务;
$.get('path/to/data', function(data) {
console.log(data);
});
它工作正常,但是当您进入所谓的“回调地狱”时会变得复杂起来。
$.get('path/to/data', function(data) {
$.get('path/to/data2' + data, function(data2) {
$.get('path/to/data3' + data2, function(data3) {
manipulate(data, data2, data3);
}, errorCb);
}, errorCb);
}, errorCb);
另一种方法是处理承诺和延迟的对象;
Deferreds - representing units of work
Promises - representing data from those Deferreds
坚持这个议程可以在每种极端的异步任务情况下为您提供帮助:
您的任务是使用$ q和$ http处理的最简单的任务
function get(url) {
var deferred = $q.defer();
$http.get(url)
.success(function (data) {
deferred.resolve(data);
})
.error(function (error) {
deferred.reject(error);
});
return deferred.promise;
}
和调用服务功能是一样的
get('http://myservice.com/JSON/')
.then(function (data) {
// do something with data
});
// cannot handle my errors?
主要内容:可见性,原子性,举个例子首先要了解的是,volatile可以保证可见性和顺序性,这些都很好理解,那么它为什么不能保证原子性呢? 可见性 可见性与Java的内存模型有关,模型采用缓存与主存的方式对变量进行操作,也就是说,每个线程都有自己的缓存空间,对变量的操作都是在缓存中进行的,之后再将修改后的值返回到主存中,这就带来了问题,有可能一个线程在将共享变量修改后,还没有来的及将缓存中的变量返回给主存中,另外一个线程就对共享变量
主要内容:可见性,原子性,举个例子首先要了解的是,volatile可以保证可见性和顺序性,这些都很好理解,那么它为什么不能保证原子性呢? 可见性 可见性与Java的内存模型有关,模型采用缓存与主存的方式对变量进行操作,也就是说,每个线程都有自己的缓存空间,对变量的操作都是在缓存中进行的,之后再将修改后的值返回到主存中,这就带来了问题,有可能一个线程在将共享变量修改后,还没有来的及将缓存中的变量返回给主存中,另外一个线程就对共享变量
问题内容: 因为在AngularJS中使用CORS和http身份验证可能会比较棘手,所以我编辑了问题以分享一个经验教训。首先,我要感谢igorzg。他的回答对我很有帮助。场景如下:您想使用AngularJS $ http服务将POST请求发送到另一个域。获取AngularJS和服务器设置时,需要注意一些棘手的事情。 第一:在您的应用程序配置中,您必须允许跨域调用 第二:您必须指定withCrede
我正在学习“放心框架”。 我使用http://ziptasticapi.com免费的API为我的演习。 当我打电话: 我得到以下字符串: {“国家”:“美国”、“州”:“正义与发展党”、“城市”:“阿达克”} as响应字符串值。 当我尝试时: 我突然想到: JAVAlang.IllegalStateException:无法分析对象,因为响应中未指定支持的内容类型。内容类型为“文本/html”;字符
问题内容: 我在节点和角度的CORS上遇到了问题,并为true添加此选项解决了我的问题。但是我找不到有关它是什么以及它在做什么的信息。请有人可以解释吗? 问题答案: 简短答案: 使您的浏览器在XHR请求中包含cookie和身份验证标头。如果您的服务依赖于任何cookie(包括会话cookie),则仅在使用此选项集的情况下才能使用。 更长的解释: 当您向其他原始服务器发出Ajax请求时,浏览器可能会
本文向大家介绍用什么工具保证一致的代码风格?为什么要这样?相关面试题,主要包含被问及用什么工具保证一致的代码风格?为什么要这样?时的应答技巧和注意事项,需要的朋友参考一下 团队协作时,保证一致的代码风格是非常重要的,这样团队成员才可以更快地修改代码,而不需要每次去适应新的风格。这些工具可以帮助我们: [ESLint] (http://eslint.org/) [Standard] (https:/