反应式可可迫使同步函数等待反应式回调

时间:2018-09-26 05:27:59

标签: reactive-cocoa reactive-swift

我做了很多研究,对此没有任何答案。

这是我的代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == GALLERY_REQUEST) {
        if (resultCode == Activity.RESULT_OK) {
            // here you can access the intent
            String msg = (data != null) ? data.getStringExtra("post_key") : "";
            Log.d("post_key", "Got post_key: " + msg);
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}

我正在尝试寻找一种使函数“ getChannelName”等待直到从反应性请求(从另一台服务器)中检索到“ channelName”的方法。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

first() function基本上会为您执行此操作:

func getChannelName(_ user: String) -> String {
    let result = self.service.requestChannelNameFromServerForUser(user).first()
    if let results = result?.value {
        return results[0].channelName
    }
    else {
        // The producer returned no values or an error. Return a default value or throw error or something.
        return ""
    }
}

但是,更惯用的方法是使connectToServer本身成为异步SignalProducer,它将getChannelNameconnectTo生产者连接到一个较大的生产者中。