【发布时间】:2016-01-06 12:10:13
【问题描述】:
我有以下场景:
- 向服务器请求令牌
- 执行一个请求,即getAllNews
- 解析请求getAllNews的响应
- 保留已解析的数据
- 删除请求的令牌
我使用 Promise 完成这 5 个操作:
return [self createToken].then(^(NSString *token) {
return [self performRequestGetAllNewsUsingToken:token];
}).then(^(id responseObject) {
return [self parseNewsResponse:responseObject];
}).then(^(NewsResponseObject *newsResponseObject) {
return [self persistNewsFromArray:newsResponseObject.allNews inContext:self.context];
}).finally(^{
[self deleteToken:token];
});
我面临的问题是我无法将参数发送到finally - 这个token 参数丢失了。
我曾考虑在[self performRequestGetAllNewsUsingToken:token] 之后立即将deleteToken 称为then,但它只会在前一个解析为实际结果而不是错误的情况下执行该操作。
无论请求的结果如何,无论它是否成功执行,我都应该销毁令牌。
有没有办法设置一个规则,如果执行createToken,那么无论如何都应该调用deleteToken,但只能在执行我的正常请求getAllNews之后调用?
【问题讨论】:
-
听起来你需要promise disposer pattern。参考中的工作示例是 javascript,但问题似乎与此处的问题相同。
标签: ios objective-c promise promisekit