在 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/