在AngularJS中创建promise
Create promise in AngularJS
我正试图用$q服务在Angular中创建一个promise。它返回从web服务检索到的对象。如果对象在缓存中,则返回该对象而不调用web服务。
问题是两个解决方案正在被调用。
也许,我在用承诺反模式吗?
这是我的代码:
function returnMapAsync() {
return $q(function (resolve, reject) {
if (navigationMap) {
resolve(navigationMap);
} else {
ServerRequest.getNavigationMap().then(function (data) {
navigationMap = data.object;
resolve(navigationMap);
});
}
});
}
感谢
您不需要在$q()
调用中包装所有内容。为了承诺navigationMap
,使用$q.when:
function returnMapAsync() {
if (navigationMap) {
return $q.when(navigationMap);
}
return ServerRequest.getNavigationMap();
}
由于ServerRequest.getNavigationMap()
是一个promise:,因此不需要再将其包装成一个promise:
function returnMapAsync() {
if (navigationMap) {
return $q.resolve(navigationMap);
}
return ServerRequest.getNavigationMap().then(function(data) {
navigationMap = data.object;
return navigationMap;
});
}
相关文章:
- 创建一个空的JavaScript Promise
- 使用Promise来创建“;原子“;Javascript中的代码块
- 在forEach循环中创建promise,并在不嵌套的情况下使用它们
- 警告:在处理程序中创建了promise,但未从中返回
- Promise创建自定义失败不是函数Angularjs错误
- 通过带有err,value签名的回调创建promise
- 如何在 Parse.com CloudCode 上创建自定义帮助程序模块以与 then() promise 一起使用?类
- PG-promise为选择查询创建自定义过滤器
- 使用 ElasticSearch javascript 客户端创建索引,promise 不会返回
- 创建 jquery promise 层次结构的指南
- NodeJS - 创建一个使用 Sequelize 函数的 Promise 函数
- 如何创建一个返回等待EventEmitter的promise的函数
- 在处理程序中创建了promise,但未从中返回
- 创建一个没有返回值的AngularJS promise
- 带有嵌套promise的$q.all也是用$q.al创建的
- Complex Q promise:一个promise创建了一个其他promise的数组
- 在AngularJS中创建一个Q promise函数调用阻塞
- 有没有办法创建'wait'javascript中的函数,它会阻塞Q.js的promise,直到值被赎回
- 如何在AngularJS中为$http promise创建单元测试
- 用静态值创建已经解析的Promise——为什么执行仍然是异步的