pub struct Promise<T = JsValue> { /* private fields */ }Expand description
The Promise object represents the eventual completion (or failure) of
an asynchronous operation, and its resulting value.
Implementations§
Source§impl Promise
impl Promise
Sourcepub fn new(cb: &mut dyn FnMut(Function, Function)) -> Promise
pub fn new(cb: &mut dyn FnMut(Function, Function)) -> Promise
Creates a new Promise with the provided executor cb
The cb is a function that is passed with the arguments resolve and
reject. The cb function is executed immediately by the Promise
implementation, passing resolve and reject functions (the executor
is called before the Promise constructor even returns the created
object). The resolve and reject functions, when called, resolve or
reject the promise, respectively. The executor normally initiates
some asynchronous work, and then, once that completes, either calls
the resolve function to resolve the promise or else rejects it if an
error occurred.
If an error is thrown in the executor function, the promise is rejected. The return value of the executor is ignored.
Source§impl<T> Promise<T>where
T: JsGeneric,
impl<T> Promise<T>where
T: JsGeneric,
Sourcepub fn new_typed<'a>(
cb: &ImmediateClosure<'a, dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>) + 'a>,
) -> Promise<T>where
ImmediateClosure<'a, dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>) + 'a>: ErasableGenericBorrow<ImmediateClosure<'static, dyn FnMut(Function<fn(JsValue) -> Undefined>, Function<fn(JsValue) -> Undefined>) + 'static>>,
Promise<T>: ErasableGenericOwn<Promise<JsValue>>,
pub fn new_typed<'a>(
cb: &ImmediateClosure<'a, dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>) + 'a>,
) -> Promise<T>where
ImmediateClosure<'a, dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>) + 'a>: ErasableGenericBorrow<ImmediateClosure<'static, dyn FnMut(Function<fn(JsValue) -> Undefined>, Function<fn(JsValue) -> Undefined>) + 'static>>,
Promise<T>: ErasableGenericOwn<Promise<JsValue>>,
Creates a new Promise with the provided executor cb
Source§impl Promise
impl Promise
Source§impl Promise
impl Promise
Sourcepub fn all_iterable<I>(
obj: &I,
) -> Promise<Array<<I::Item as Promising>::Resolution>>
pub fn all_iterable<I>( obj: &I, ) -> Promise<Array<<I::Item as Promising>::Resolution>>
The Promise.all(iterable) method returns a single Promise that
resolves when all of the promises in the iterable argument have resolved
or when the iterable argument contains no promises. It rejects with the
reason of the first promise that rejects.
Source§impl Promise
impl Promise
Sourcepub fn all_settled(obj: Object) -> Promise
pub fn all_settled(obj: Object) -> Promise
The Promise.allSettled(iterable) method returns a single Promise that
resolves when all of the promises in the iterable argument have either
fulfilled or rejected or when the iterable argument contains no promises.
Source§impl Promise
impl Promise
Sourcepub fn all_settled_iterable<I>(
obj: &I,
) -> Promise<Array<PromiseState<<I::Item as Promising>::Resolution>>>where
I: Iterable + ErasableGenericBorrow<JsValue>,
I::Item: Promising,
Promise<Array<PromiseState<<I::Item as Promising>::Resolution>>>: ErasableGenericOwn<Promise<Array<PromiseState<<JsValue as Promising>::Resolution>>>>,
pub fn all_settled_iterable<I>(
obj: &I,
) -> Promise<Array<PromiseState<<I::Item as Promising>::Resolution>>>where
I: Iterable + ErasableGenericBorrow<JsValue>,
I::Item: Promising,
Promise<Array<PromiseState<<I::Item as Promising>::Resolution>>>: ErasableGenericOwn<Promise<Array<PromiseState<<JsValue as Promising>::Resolution>>>>,
The Promise.allSettled(iterable) method returns a single Promise that
resolves when all of the promises in the iterable argument have either
fulfilled or rejected or when the iterable argument contains no promises.
Source§impl Promise
impl Promise
Sourcepub fn any(obj: &JsValue) -> Promise
pub fn any(obj: &JsValue) -> Promise
The Promise.any(iterable) method returns a single Promise that
resolves when any of the promises in the iterable argument have resolved
or when the iterable argument contains no promises. It rejects with an
AggregateError if all promises in the iterable rejected.
Source§impl Promise
impl Promise
Sourcepub fn any_iterable<I>(obj: &I) -> Promise<<I::Item as Promising>::Resolution>
pub fn any_iterable<I>(obj: &I) -> Promise<<I::Item as Promising>::Resolution>
The Promise.any(iterable) method returns a single Promise that
resolves when any of the promises in the iterable argument have resolved
or when the iterable argument contains no promises. It rejects with an
AggregateError if all promises in the iterable rejected.
Source§impl Promise
impl Promise
Source§impl Promise
impl Promise
Sourcepub fn race_iterable<I>(obj: &I) -> Promise<<I::Item as Promising>::Resolution>
pub fn race_iterable<I>(obj: &I) -> Promise<<I::Item as Promising>::Resolution>
The Promise.race(iterable) method returns a promise that resolves or
rejects as soon as one of the promises in the iterable resolves or
rejects, with the value or reason from that promise.
Source§impl Promise
impl Promise
Source§impl Promise
impl Promise
Sourcepub fn reject_typed<T>(obj: &JsValue) -> Promise<T>
pub fn reject_typed<T>(obj: &JsValue) -> Promise<T>
The Promise.reject(reason) method returns a Promise object that is
rejected with the given reason.
Source§impl Promise
impl Promise
Sourcepub fn resolve<U>(obj: &U) -> Promise<U::Resolution>
pub fn resolve<U>(obj: &U) -> Promise<U::Resolution>
The Promise.resolve(value) method returns a Promise object that is
resolved with the given value. If the value is a promise, that promise
is returned; if the value is a thenable (i.e. has a “then” method), the
returned promise will “follow” that thenable, adopting its eventual
state; otherwise the returned promise will be fulfilled with the value.
Source§impl<T> Promise<T>
impl<T> Promise<T>
Sourcepub fn catch(
&self,
cb: &ScopedClosure<'_, dyn FnMut(JsValue)>,
) -> Promise<JsValue>
pub fn catch( &self, cb: &ScopedClosure<'_, dyn FnMut(JsValue)>, ) -> Promise<JsValue>
The catch() method returns a Promise and deals with rejected cases
only. It behaves the same as calling Promise.prototype.then(undefined, onRejected) (in fact, calling obj.catch(onRejected) internally calls
obj.then(undefined, onRejected)).
Source§impl<T> Promise<T>
impl<T> Promise<T>
Sourcepub fn catch_map<'a, R>(
&self,
cb: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
R: Promising,
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>>,
pub fn catch_map<'a, R>(
&self,
cb: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
R: Promising,
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>>,
Same as catch, but returning a result to become the new Promise value.
Source§impl<T> Promise<T>
impl<T> Promise<T>
Sourcepub fn then<'a>(&self, cb: &ScopedClosure<'a, dyn FnMut(T)>) -> Promise<JsValue>where
ScopedClosure<'a, dyn FnMut(T)>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue)>>,
pub fn then<'a>(&self, cb: &ScopedClosure<'a, dyn FnMut(T)>) -> Promise<JsValue>where
ScopedClosure<'a, dyn FnMut(T)>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue)>>,
The then() method returns a Promise. It takes up to two arguments:
callback functions for the success and failure cases of the Promise.
Source§impl<T> Promise<T>
impl<T> Promise<T>
Sourcepub fn then_with_reject<'a, R>(
&self,
resolve: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
reject: &ScopedClosure<'a, dyn FnMut(JsValue) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
R: Promising,
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
ScopedClosure<'a, dyn FnMut(JsValue) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>>,
pub fn then_with_reject<'a, R>(
&self,
resolve: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
reject: &ScopedClosure<'a, dyn FnMut(JsValue) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
R: Promising,
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
ScopedClosure<'a, dyn FnMut(JsValue) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>>,
The then() method returns a Promise. It takes up to two arguments:
callback functions for the success and failure cases of the Promise.
Source§impl<T> Promise<T>
impl<T> Promise<T>
Sourcepub fn then_map<'a, R>(
&self,
cb: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
R: Promising,
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>>,
pub fn then_map<'a, R>(
&self,
cb: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
R: Promising,
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>>,
Alias for then() with a return value.
The then() method returns a Promise. It takes up to two arguments:
callback functions for the success and failure cases of the Promise.
Source§impl<T> Promise<T>
impl<T> Promise<T>
Sourcepub fn finally(&self, cb: &ScopedClosure<'_, dyn FnMut()>) -> Promise<JsValue>
pub fn finally(&self, cb: &ScopedClosure<'_, dyn FnMut()>) -> Promise<JsValue>
The finally() method returns a Promise. When the promise is settled,
whether fulfilled or rejected, the specified callback function is
executed. This provides a way for code that must be executed once the
Promise has been dealt with to be run whether the promise was
fulfilled successfully or rejected.
This lets you avoid duplicating code in both the promise’s then() and
catch() handlers.
Methods from Deref<Target = Object>§
Sourcepub fn constructor(&self) -> Function
pub fn constructor(&self) -> Function
The constructor property returns a reference to the Object constructor
function that created the instance object.
Sourcepub fn has_own_property(&self, property: &JsValue) -> bool
👎Deprecated: Use Object::hasOwn instead.
pub fn has_own_property(&self, property: &JsValue) -> bool
Object::hasOwn instead.The hasOwnProperty() method returns a boolean indicating whether the
object has the specified property as its own property (as opposed to
inheriting it).
Sourcepub fn is_prototype_of(&self, value: &JsValue) -> bool
pub fn is_prototype_of(&self, value: &JsValue) -> bool
The isPrototypeOf() method checks if an object exists in another
object’s prototype chain.
Sourcepub fn property_is_enumerable(&self, property: &JsValue) -> bool
pub fn property_is_enumerable(&self, property: &JsValue) -> bool
The propertyIsEnumerable() method returns a Boolean indicating
whether the specified property is enumerable.
Sourcepub fn to_locale_string(&self) -> JsString
pub fn to_locale_string(&self) -> JsString
The toLocaleString() method returns a string representing the object.
This method is meant to be overridden by derived objects for
locale-specific purposes.
Sourcepub fn to_string(&self) -> JsString
pub fn to_string(&self) -> JsString
The toString() method returns a string representing the object.
Sourcepub fn to_js_string(&self) -> JsString
pub fn to_js_string(&self) -> JsString
The toString() method returns a string representing the object.
Methods from Deref<Target = JsValue>§
pub const NULL: JsValue
pub const UNDEFINED: JsValue
pub const TRUE: JsValue
pub const FALSE: JsValue
Sourcepub fn as_f64(&self) -> Option<f64>
pub fn as_f64(&self) -> Option<f64>
Returns the f64 value of this JS value if it’s an instance of a
number.
If this JS value is not an instance of a number then this returns
None.
Sourcepub fn as_string(&self) -> Option<String>
pub fn as_string(&self) -> Option<String>
If this JS value is a string value, this function copies the JS string
value into Wasm linear memory, encoded as UTF-8, and returns it as a
Rust String.
To avoid the copying and re-encoding, consider the
JsString::try_from() function from js-sys
instead.
If this JS value is not an instance of a string or if it’s not valid
utf-8 then this returns None.
§UTF-16 vs UTF-8
JavaScript strings in general are encoded as UTF-16, but Rust strings
are encoded as UTF-8. This can cause the Rust string to look a bit
different than the JS string sometimes. For more details see the
documentation about the str type which contains a few
caveats about the encodings.
Sourcepub fn as_bool(&self) -> Option<bool>
pub fn as_bool(&self) -> Option<bool>
Returns the bool value of this JS value if it’s an instance of a
boolean.
If this JS value is not an instance of a boolean then this returns
None.
Sourcepub fn is_undefined(&self) -> bool
pub fn is_undefined(&self) -> bool
Tests whether this JS value is undefined
Sourcepub fn is_null_or_undefined(&self) -> bool
pub fn is_null_or_undefined(&self) -> bool
Tests whether this JS value is null or undefined
Sourcepub fn is_function(&self) -> bool
pub fn is_function(&self) -> bool
Tests whether the type of this JS value is function.
Sourcepub fn js_in(&self, obj: &JsValue) -> bool
pub fn js_in(&self, obj: &JsValue) -> bool
Applies the binary in JS operator on the two JsValues.
Sourcepub fn loose_eq(&self, other: &JsValue) -> bool
pub fn loose_eq(&self, other: &JsValue) -> bool
Compare two JsValues for equality, using the == operator in JS.
Sourcepub fn unsigned_shr(&self, rhs: &JsValue) -> u32
pub fn unsigned_shr(&self, rhs: &JsValue) -> u32
Applies the binary >>> JS operator on the two JsValues.
Sourcepub fn checked_div(&self, rhs: &JsValue) -> JsValue
pub fn checked_div(&self, rhs: &JsValue) -> JsValue
Applies the binary / JS operator on two JsValues, catching and returning any RangeError thrown.
Sourcepub fn pow(&self, rhs: &JsValue) -> JsValue
pub fn pow(&self, rhs: &JsValue) -> JsValue
Applies the binary ** JS operator on the two JsValues.
Sourcepub fn lt(&self, other: &JsValue) -> bool
pub fn lt(&self, other: &JsValue) -> bool
Applies the binary < JS operator on the two JsValues.
Sourcepub fn le(&self, other: &JsValue) -> bool
pub fn le(&self, other: &JsValue) -> bool
Applies the binary <= JS operator on the two JsValues.
Sourcepub fn ge(&self, other: &JsValue) -> bool
pub fn ge(&self, other: &JsValue) -> bool
Applies the binary >= JS operator on the two JsValues.
Sourcepub fn gt(&self, other: &JsValue) -> bool
pub fn gt(&self, other: &JsValue) -> bool
Applies the binary > JS operator on the two JsValues.
Sourcepub fn unchecked_into_f64(&self) -> f64
pub fn unchecked_into_f64(&self) -> f64
Applies the unary + JS operator on a JsValue. Can throw.
Trait Implementations§
Source§impl<T> ErasableGeneric for Promise<T>
impl<T> ErasableGeneric for Promise<T>
Source§impl<T> FromWasmAbi for Promise<T>
impl<T> FromWasmAbi for Promise<T>
Source§impl<'a, T> IntoWasmAbi for &'a Promise<T>
impl<'a, T> IntoWasmAbi for &'a Promise<T>
Source§impl<T> IntoWasmAbi for Promise<T>
impl<T> IntoWasmAbi for Promise<T>
Source§impl<T> JsCast for Promise<T>
impl<T> JsCast for Promise<T>
Source§fn instanceof(val: &JsValue) -> bool
fn instanceof(val: &JsValue) -> bool
instanceof check to see whether the JsValue
provided is an instance of this type. Read moreSource§fn unchecked_from_js(val: JsValue) -> Self
fn unchecked_from_js(val: JsValue) -> Self
Source§fn unchecked_from_js_ref(val: &JsValue) -> &Self
fn unchecked_from_js_ref(val: &JsValue) -> &Self
Source§fn has_type<T>(&self) -> boolwhere
T: JsCast,
fn has_type<T>(&self) -> boolwhere
T: JsCast,
T. Read moreSource§fn dyn_into<T>(self) -> Result<T, Self>where
T: JsCast,
fn dyn_into<T>(self) -> Result<T, Self>where
T: JsCast,
T. Read moreSource§fn dyn_ref<T>(&self) -> Option<&T>where
T: JsCast,
fn dyn_ref<T>(&self) -> Option<&T>where
T: JsCast,
T. Read moreSource§fn unchecked_into<T>(self) -> Twhere
T: JsCast,
fn unchecked_into<T>(self) -> Twhere
T: JsCast,
Source§fn unchecked_ref<T>(&self) -> &Twhere
T: JsCast,
fn unchecked_ref<T>(&self) -> &Twhere
T: JsCast,
Source§impl<T> LongRefFromWasmAbi for Promise<T>
impl<T> LongRefFromWasmAbi for Promise<T>
Source§impl<T> OptionFromWasmAbi for Promise<T>
impl<T> OptionFromWasmAbi for Promise<T>
Source§impl<'a, T> OptionIntoWasmAbi for &'a Promise<T>
impl<'a, T> OptionIntoWasmAbi for &'a Promise<T>
Source§impl<T> OptionIntoWasmAbi for Promise<T>
impl<T> OptionIntoWasmAbi for Promise<T>
Source§impl<T: JsGeneric> Promising for Promise<T>
impl<T: JsGeneric> Promising for Promise<T>
Source§type Resolution = T
type Resolution = T
Source§impl<T> RefFromWasmAbi for Promise<T>
impl<T> RefFromWasmAbi for Promise<T>
Source§type Abi = <JsValue as RefFromWasmAbi>::Abi
type Abi = <JsValue as RefFromWasmAbi>::Abi
Self are recovered from.Source§type Anchor = ManuallyDrop<Promise<T>>
type Anchor = ManuallyDrop<Promise<T>>
Self for the duration of the
invocation of the function that has an &Self parameter. This is
required to ensure that the lifetimes don’t persist beyond one function
call, and so that they remain anonymous.impl<T> UpcastFrom<Promise<T>> for JsOption<Object>
impl<T, __UpcastTarget0> UpcastFrom<Promise<T>> for JsOption<Promise<__UpcastTarget0>>where
__UpcastTarget0: UpcastFrom<T>,
impl<T> UpcastFrom<Promise<T>> for JsValue
impl<T> UpcastFrom<Promise<T>> for Object
impl<T, __UpcastTarget0> UpcastFrom<Promise<T>> for Promise<__UpcastTarget0>where
__UpcastTarget0: UpcastFrom<T>,
Auto Trait Implementations§
impl<T> Freeze for Promise<T>
impl<T> RefUnwindSafe for Promise<T>where
T: RefUnwindSafe,
impl<T> Send for Promise<T>where
T: Send,
impl<T> Sync for Promise<T>where
T: Sync,
impl<T> Unpin for Promise<T>where
T: Unpin,
impl<T> UnsafeUnpin for Promise<T>
impl<T> UnwindSafe for Promise<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
Source§type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
IntoWasmAbi::AbiSource§fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
IntoWasmAbi::into_abi, except that it may throw and never
return in the case of Err.