#[repr(transparent)]pub struct Promise<T = JsValue> {
pub obj: Object,
pub generics: PhantomData<fn() -> (T,)>,
}Expand description
The Promise object represents the eventual completion (or failure) of
an asynchronous operation, and its resulting value.
Fields§
§obj: Object§generics: PhantomData<fn() -> (T,)>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 Promise
impl Promise
Sourcepub fn new_typed<T: Promising + JsGeneric>(
cb: &mut dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>),
) -> Promise<<T as Promising>::Resolution>where
dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>): ErasableGenericBorrowMut<dyn FnMut(Function<fn(JsValue) -> Undefined>, Function<fn(JsValue) -> Undefined>)>,
for<'__wry_bindgen> &'__wry_bindgen mut dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>): EncodeTypeDef + BinaryEncode,
Promise<<T as Promising>::Resolution>: ErasableGenericOwn<Promise<<JsValue as Promising>::Resolution>> + EncodeTypeDef + BatchableResult,
pub fn new_typed<T: Promising + JsGeneric>(
cb: &mut dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>),
) -> Promise<<T as Promising>::Resolution>where
dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>): ErasableGenericBorrowMut<dyn FnMut(Function<fn(JsValue) -> Undefined>, Function<fn(JsValue) -> Undefined>)>,
for<'__wry_bindgen> &'__wry_bindgen mut dyn FnMut(Function<fn(T) -> Undefined>, Function<fn(JsValue) -> Undefined>): EncodeTypeDef + BinaryEncode,
Promise<<T as Promising>::Resolution>: ErasableGenericOwn<Promise<<JsValue as Promising>::Resolution>> + EncodeTypeDef + BatchableResult,
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>>where
I::Item: Promising,
I: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Iterable,
for<'__wry_bindgen> &'__wry_bindgen I: BinaryEncode,
Promise<Array<<I::Item as Promising>::Resolution>>: ErasableGenericOwn<Promise<Array<<JsValue as Promising>::Resolution>>> + EncodeTypeDef + BatchableResult,
pub fn all_iterable<I>(
obj: &I,
) -> Promise<Array<<I::Item as Promising>::Resolution>>where
I::Item: Promising,
I: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Iterable,
for<'__wry_bindgen> &'__wry_bindgen I: BinaryEncode,
Promise<Array<<I::Item as Promising>::Resolution>>: ErasableGenericOwn<Promise<Array<<JsValue as Promising>::Resolution>>> + EncodeTypeDef + BatchableResult,
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: &JsValue) -> Promise
pub fn all_settled(obj: &JsValue) -> 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::Item: Promising,
I: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Iterable,
for<'__wry_bindgen> &'__wry_bindgen I: BinaryEncode,
Promise<Array<PromiseState<<I::Item as Promising>::Resolution>>>: ErasableGenericOwn<Promise<Array<PromiseState<<JsValue as Promising>::Resolution>>>> + EncodeTypeDef + BatchableResult,
pub fn all_settled_iterable<I>(
obj: &I,
) -> Promise<Array<PromiseState<<I::Item as Promising>::Resolution>>>where
I::Item: Promising,
I: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Iterable,
for<'__wry_bindgen> &'__wry_bindgen I: BinaryEncode,
Promise<Array<PromiseState<<I::Item as Promising>::Resolution>>>: ErasableGenericOwn<Promise<Array<PromiseState<<JsValue as Promising>::Resolution>>>> + EncodeTypeDef + BatchableResult,
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>where
I::Item: Promising,
I: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Iterable,
for<'__wry_bindgen> &'__wry_bindgen I: BinaryEncode,
Promise<<I::Item as Promising>::Resolution>: ErasableGenericOwn<Promise<<JsValue as Promising>::Resolution>> + EncodeTypeDef + BatchableResult,
pub fn any_iterable<I>(obj: &I) -> Promise<<I::Item as Promising>::Resolution>where
I::Item: Promising,
I: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Iterable,
for<'__wry_bindgen> &'__wry_bindgen I: BinaryEncode,
Promise<<I::Item as Promising>::Resolution>: ErasableGenericOwn<Promise<<JsValue as Promising>::Resolution>> + EncodeTypeDef + BatchableResult,
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>where
I::Item: Promising,
I: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Iterable,
for<'__wry_bindgen> &'__wry_bindgen I: BinaryEncode,
Promise<<I::Item as Promising>::Resolution>: ErasableGenericOwn<Promise<<JsValue as Promising>::Resolution>> + EncodeTypeDef + BatchableResult,
pub fn race_iterable<I>(obj: &I) -> Promise<<I::Item as Promising>::Resolution>where
I::Item: Promising,
I: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Iterable,
for<'__wry_bindgen> &'__wry_bindgen I: BinaryEncode,
Promise<<I::Item as Promising>::Resolution>: ErasableGenericOwn<Promise<<JsValue as Promising>::Resolution>> + EncodeTypeDef + BatchableResult,
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<T> Promise<T>
impl<T> Promise<T>
Sourcepub fn reject_typed(obj: &JsValue) -> Promise<T>
pub fn reject_typed(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>where
U: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Promising,
for<'__wry_bindgen> &'__wry_bindgen U: BinaryEncode,
Promise<U::Resolution>: ErasableGenericOwn<Promise<JsValue>> + EncodeTypeDef + BatchableResult,
pub fn resolve<U>(obj: &U) -> Promise<U::Resolution>where
U: ErasableGenericBorrow<JsValue> + EncodeTypeDef + Promising,
for<'__wry_bindgen> &'__wry_bindgen U: BinaryEncode,
Promise<U::Resolution>: ErasableGenericOwn<Promise<JsValue>> + EncodeTypeDef + BatchableResult,
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: Promising>(
&self,
cb: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>> + EncodeTypeDef + BatchableResult,
pub fn catch_map<'a, R: Promising>(
&self,
cb: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>> + EncodeTypeDef + BatchableResult,
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: Promising>(
&self,
resolve: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
reject: &ScopedClosure<'a, dyn FnMut(JsValue) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
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>> + EncodeTypeDef + BatchableResult,
pub fn then_with_reject<'a, R: Promising>(
&self,
resolve: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
reject: &ScopedClosure<'a, dyn FnMut(JsValue) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
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>> + EncodeTypeDef + BatchableResult,
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: Promising>(
&self,
cb: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>> + EncodeTypeDef + BatchableResult,
pub fn then_map<'a, R: Promising>(
&self,
cb: &ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>,
) -> Promise<R::Resolution>where
ScopedClosure<'a, dyn FnMut(T) -> Result<R, JsError>>: ErasableGenericBorrow<ScopedClosure<'static, dyn FnMut(JsValue) -> Result<JsValue, JsError>>>,
Promise<R::Resolution>: ErasableGenericOwn<Promise<JsValue>> + EncodeTypeDef + BatchableResult,
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 Promise
impl Promise
Sourcepub fn then2(
&self,
resolve: &ScopedClosure<'_, dyn FnMut(JsValue)>,
reject: &ScopedClosure<'_, dyn FnMut(JsValue)>,
) -> Promise
pub fn then2( &self, resolve: &ScopedClosure<'_, dyn FnMut(JsValue)>, reject: &ScopedClosure<'_, dyn FnMut(JsValue)>, ) -> Promise
Same as then, only with both arguments provided.
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.
Source§impl Promise
impl Promise
Sourcepub fn all_tuple<T: PromiseTuple>(promises: T) -> Promise<T::Joined>
pub fn all_tuple<T: PromiseTuple>(promises: T) -> Promise<T::Joined>
Heterogeneous counterpart to Promise::all_iterable: accepts a Rust
tuple of Promise<T_i> and returns a single Promise resolving to a
typed ArrayTuple<(T_1, T_2, ..., T_n)>.
Destructure the awaited result via ArrayTuple::into_tuple to get
the individual values back as a native Rust tuple. Implemented for
arity 1..=8.
Rejects with the first rejection, matching Promise.all semantics.
§Example
use js_sys::Promise;
let (response, buffer) = Promise::all_tuple((fetch_promise, buffer_promise))
.await?
.into_tuple();Sourcepub fn all_settled_tuple<T: PromiseTuple>(promises: T) -> Promise<T::Settled>
pub fn all_settled_tuple<T: PromiseTuple>(promises: T) -> Promise<T::Settled>
Heterogeneous counterpart to Promise::all_settled_iterable: accepts
a Rust tuple of Promise<T_i> and returns a single Promise
resolving to a typed
ArrayTuple<(PromiseState<T_1>, ..., PromiseState<T_n>)>.
Unlike Promise::all_tuple, this never rejects early: every input
settles (fulfills or rejects) and is reflected by its PromiseState
slot in the result tuple. Implemented for arity 1..=8.
§Example
use js_sys::Promise;
let results = Promise::all_settled_tuple((fetch_promise, buffer_promise)).await?;
let (response_state, buffer_state) = results.into_tuple();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
Use 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 id(&self) -> u64
pub fn id(&self) -> u64
Get the heap ID for this value.
This is used internally for encoding values to send to JS.
Sourcepub fn unchecked_into_f64(&self) -> f64
pub fn unchecked_into_f64(&self) -> f64
Returns the value as f64 without type checking. Used by serde-wasm-bindgen for numeric conversions.
Sourcepub fn has_type<T>(&self) -> boolwhere
T: JsCast,
pub fn has_type<T>(&self) -> boolwhere
T: JsCast,
Check if this value is an instance of a specific JS type.
Sourcepub fn checked_div(&self, rhs: &JsValue) -> JsValue
pub fn checked_div(&self, rhs: &JsValue) -> JsValue
Checked division.
Sourcepub fn unsigned_shr(&self, rhs: &JsValue) -> u32
pub fn unsigned_shr(&self, rhs: &JsValue) -> u32
Unsigned right shift.
Sourcepub fn is_function(&self) -> bool
pub fn is_function(&self) -> bool
Check if this value is a function.
Sourcepub fn is_undefined(&self) -> bool
pub fn is_undefined(&self) -> bool
Check if this value is undefined.
Sourcepub fn is_null_or_undefined(&self) -> bool
pub fn is_null_or_undefined(&self) -> bool
Check if this value is null or undefined.
Sourcepub fn js_in(&self, obj: &JsValue) -> bool
pub fn js_in(&self, obj: &JsValue) -> bool
Check if this value has a property with the given name.
Sourcepub fn as_debug_string(&self) -> String
pub fn as_debug_string(&self) -> String
Get a debug string representation of the value.
Trait Implementations§
Source§impl<T> BatchableResult for Promise<T>
impl<T> BatchableResult for Promise<T>
Source§impl<T> BinaryDecode for Promise<T>
impl<T> BinaryDecode for Promise<T>
fn decode(decoder: &mut DecodedData<'_>) -> Result<Self, DecodeError>
Source§impl<T> BinaryEncode for Promise<T>
impl<T> BinaryEncode for Promise<T>
fn encode(self, encoder: &mut EncodedData)
Source§impl<T> EncodeTypeDef for Promise<T>
impl<T> EncodeTypeDef for Promise<T>
Source§fn encode_type_def(buf: &mut Vec<u8>)
fn encode_type_def(buf: &mut Vec<u8>)
Source§impl<T: FromWasmAbi + 'static> IntoFuture for Promise<T>
impl<T: FromWasmAbi + 'static> IntoFuture for Promise<T>
Source§impl<T: 'static> IntoJsGeneric for Promise<T>
impl<T: 'static> IntoJsGeneric 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
Source§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 is_type_of(val: &JsValue) -> bool
fn is_type_of(val: &JsValue) -> bool
JsValue provided
is a value of this type. Read moreSource§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,
Source§fn dyn_ref<T>(&self) -> Option<&T>where
T: JsCast,
fn dyn_ref<T>(&self) -> Option<&T>where
T: JsCast,
Source§fn is_instance_of<T>(&self) -> boolwhere
T: JsCast,
fn is_instance_of<T>(&self) -> boolwhere
T: JsCast,
T. Read more