2012-10-03 71 views
2

這可能嗎?也就是說,我嘗試了它,但沒有奏效。但理論上它應該是可能的嗎?我只是傳遞消息來回,孤立的內存空間等不能從dart:io應用程序到dart:html應用程序的spawnUri()?

import 'dart:io'; 
import 'dart:isolate'; 

main(){ 
    final sp = spawnUri('path/to/dart_html_app.dart'); 
} 

拋出:

IsolateSpawnException: 'Do not know how to load 'dart:html' 
+0

如果上面的代碼在服務器端虛擬機中運行,那麼它無法訪問dart:html(afik)。然而,我可以想象,一個使用websocket的場景,其中以前連接的瀏覽器可以使用一些代理對象來「產生」客戶端飛鏢隔離。這是你設想的場景類型嗎? –

+0

是的,但沒有代理。 :) –

+0

我也不能直接看到這個工作。不要簡單地產卵,因爲特定的產卵對我說「在這個虛擬機啓動另一個隔離與代碼從x檢索」。也就是說,我可以看到一個時間,Websocket被用來觸發在另一個vm實例(即dartium)中創建隔離區,然後將發送端口返回到隔離區。只是不是隔離本身的特定產卵。 –

回答

2

正如有人已經指出,你不能在虛擬機導入dart:html(至少在這點)。你的解決方案是將應用程序分成兩個庫,其中你想產卵的那個不使用dart:html

你究竟在做什麼?如果你認爲你可以讓瀏覽器和虛擬機通過隔離進行通信,那麼這是行不通的。如果可用,則隔離使用虛擬機中的線程池和瀏覽器上的Web Workers。

如果你只是想「從這個URI加載代碼並執行它就像新的隔離中的任何代碼一樣」,那麼這當然是可能的 - 爲什麼不呢?你只需重構你的代碼庫,這樣你就不會導入dart:html,除非你真的需要它。

相關問題