From c909faf9e6cd2964398da7c0852d0229cdd1a22b Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 30 Jul 2021 13:36:43 +0200 Subject: chore(core): use oneshot channel in mod_evaluate() (#11556) Oneshot is more appropriate because mod_evaluate() only sends a single value. It also makes it easier to use it correctly. As an embedder, I wasn't sure if I'm expected to drain the channel or not. --- runtime/web_worker.rs | 4 ++-- runtime/worker.rs | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'runtime') diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index 344bb73c0..773fce80f 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -457,7 +457,7 @@ impl WebWorker { let mut receiver = self.js_runtime.mod_evaluate(id); tokio::select! { - maybe_result = receiver.next() => { + maybe_result = &mut receiver => { debug!("received worker module evaluate {:#?}", maybe_result); // If `None` is returned it means that runtime was destroyed before // evaluation was complete. This can happen in Web Worker when `self.close()` @@ -470,7 +470,7 @@ impl WebWorker { return Ok(()); } event_loop_result?; - let maybe_result = receiver.next().await; + let maybe_result = receiver.await; maybe_result.unwrap_or(Ok(())) } } diff --git a/runtime/worker.rs b/runtime/worker.rs index f7287cfbb..94edd6f1e 100644 --- a/runtime/worker.rs +++ b/runtime/worker.rs @@ -7,7 +7,6 @@ use crate::ops; use crate::permissions::Permissions; use deno_broadcast_channel::InMemoryBroadcastChannel; use deno_core::error::AnyError; -use deno_core::futures::stream::StreamExt; use deno_core::futures::Future; use deno_core::located_script_name; use deno_core::serde_json; @@ -218,14 +217,14 @@ impl MainWorker { self.wait_for_inspector_session(); let mut receiver = self.js_runtime.mod_evaluate(id); tokio::select! { - maybe_result = receiver.next() => { + maybe_result = &mut receiver => { debug!("received module evaluate {:#?}", maybe_result); maybe_result.expect("Module evaluation result not provided.") } event_loop_result = self.run_event_loop(false) => { event_loop_result?; - let maybe_result = receiver.next().await; + let maybe_result = receiver.await; maybe_result.expect("Module evaluation result not provided.") } } -- cgit v1.2.3