我有以下情况:
我用诺言做了这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参数丢失了。
我考虑在deleteToken之后立即将then调用为then,但只有在上一次操作解析为实际结果而不是错误时,它才会执行操作。我应该销毁令牌,不管请求的结果是什么,也不管它是否成功执行。
是否有一种方法可以设置这样一种规则:如果执行了createToken,那么无论如何都应该调用deleteToken,但只在执行正常的请求getAllNews之后才调用。
发布于 2015-10-10 19:02:32
在闭包中捕获令牌,以便在finally子句中访问它:
NSString* token;
return [self createToken].then(^(NSString *token_) {
token = *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];
});https://stackoverflow.com/questions/33023099
复制相似问题