[−][src]Struct rslint_core::groups::errors::NoAwaitInLoop
Disallow await inside of loops.
You may want to await
a promise until it is fulfilled or rejected, inside of loops. In such cases, to take
full advantage of concurrency, you should not await
the promise in every iteration, otherwise your async
operations will be executed serially.
Generally it is recommended that you create all promises, then use Promise.all
for them. This way your async
operations will be performed concurrently.
Incorrect Code Exapmles
async function foo(xs) {
const results = [];
for (const x of xs) {
// iteration does not proceed until `bar(x)` completes
results.push(await bar(x));
}
return baz(results);
}
Correct Code Examples
async function foo(xs) {
const results = [];
for (const x of xs) {
// push a promise to the array; it does not prevent the iteration
results.push(bar(x));
}
// we wait for all the promises concurrently
return baz(await Promise.all(results));
}
Implementations
impl NoAwaitInLoop
[src]
Trait Implementations
impl Clone for NoAwaitInLoop
[src]
fn clone(&self) -> NoAwaitInLoop
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl CstRule for NoAwaitInLoop
[src]
fn check_node(&self, node: &SyntaxNode, ctx: &mut RuleCtx) -> Option<()>
[src]
fn check_token(&self, token: &SyntaxToken, ctx: &mut RuleCtx) -> Option<()>
[src]
fn check_root(&self, root: &SyntaxNode, ctx: &mut RuleCtx) -> Option<()>
[src]
impl Debug for NoAwaitInLoop
[src]
impl Default for NoAwaitInLoop
[src]
fn default() -> NoAwaitInLoop
[src]
impl<'de> Deserialize<'de> for NoAwaitInLoop
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl Rule for NoAwaitInLoop
[src]
fn name(&self) -> &'static str
[src]
fn group(&self) -> &'static str
[src]
fn docs(&self) -> &'static str
[src]
impl Serialize for NoAwaitInLoop
[src]
Auto Trait Implementations
impl RefUnwindSafe for NoAwaitInLoop
impl Send for NoAwaitInLoop
impl Sync for NoAwaitInLoop
impl Unpin for NoAwaitInLoop
impl UnwindSafe for NoAwaitInLoop
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
impl<T> DynClone for T where
T: Clone,
[src]
T: Clone,
fn __clone_box(&self, Private) -> *mut ()
[src]
impl<T> Erasable for T
unsafe fn unerase(this: NonNull<Erased>) -> NonNull<T>
const ACK_1_1_0: bool
fn erase(this: NonNull<Self>) -> NonNull<Erased>
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Serialize for T where
T: Serialize + ?Sized,
[src]
T: Serialize + ?Sized,
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,