objective-c - Objective-C 中的 JavaScript promise

标签 objective-c objective-c-blocks promise

在 JavaScript 中,有一个 Promise 的概念,您可以将一个函数作为参数传递给另一个函数。例如:

doSomething(doSomethingElse());

我用 Objective-C 编写了基于 block 的代码。代码使用示例如下:

[MyObject doSomethingWithSuccessHandler:^()
{
    [My object doSomethingMoreWithSuccessHandler:^()
    {
        [myObject saveTheResults];
    }
    failureHandler:^(MYError *myError) 
    {
        [MyObject logError:myError];
    }];
}
failureHandler:^(MYError *myError) 
{
    [MyObject logError:myError];
}];

我希望按以下方式使用它(如 JavaScript Promise),而不是如上面代码片段所示使用基于 block 的代码:

[MyObject doSomethingAndOnSuccess:[myObject doSomethingMoreAndOnSuccess:[myObject saveTheResults] onFailure:[myObject logError] ] onFailure:[myObject logError] ];

这可能吗?这只是为了代码的可读性,正如您所看到的,在第一种情况下,有很多我想避免的金字塔代码。

最佳答案

看看 Facebook 和 Parse 的 Bolts。

这些将为您提供您正在寻找的东西。

https://developers.facebook.com/blog/post/2014/01/30/let-s-bolt/

您也可以将其作为 Cocoapod 来轻松安装。

关于objective-c - Objective-C 中的 JavaScript promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22504312/

相关文章:

objective-c - 如何有效地通过 tcp 发送对象

iOS:离线制作一个http请求队列

javascript - Node.js 中的循环 Promise

iphone - 如何在 iPhone 应用程序中保存 .zip 文件

objective-c - NSArray 循环抓取对象

objective-c - 调用 super block /扩展 block

javascript - AWS Lambda 在终止前不会解决所有 promise

node.js - 不太了解 Q Promise 库

iphone - UITableView 插入旧数据

iOS: block 是否保留堆栈框架?