當我製作future
或應用方法如onSuccess
和map
時,我可以爲它們指定ExecutionContext。Scala:用於將來理解的ExecutionContext
例如,
val f = future {
// code
} executionContext
f.map(someFunction)(executionContext)
f onSuccess {
// code
} executionContext
但是,如果我用一個換理解未來的,我怎麼能爲yield
部分指定的ExecutionContext?
for {
f <- future1
g <- future2
} yield {
// code to be executed after future1 onSuccess and future2 onSuccess
// What ExecutionContext runs this code?
} // (executionContext) here does not work
而且,如果沒有指定,ExecutionContext在yield中運行代碼?
編輯
確定。感謝答案,我找到了一些東西。
如果我沒有定義或導入隱含的ExecutionContext(如Implicits.global
), 的換理解不編譯。這意味着,for-comprehension使用隱式的ExecutionContext。
然後,我該如何使用不含隱式ExecutionContext的理解,即如何指定?
請參閱我的回答,瞭解爲什麼如果您沒有指定「隱式」,for'comprehensions將無法編譯。 –
@flavian在簡單的情況下,這是有效的。但是如果有兩個ExecutionContext用於理解,我該如何指定?它會顯示錯誤,如「含糊的隱含值」。我可以阻止每次我定義或導入隱式vals或defs&for-comprehension,但有沒有另一種方式? – Naetmul
只是要絕對確定 - 你的意思是用多個生成器(在這種情況下,flavian的答案是有效的)還是多個相應的for-comprehensions一個'for for'-理解? –