本文整理汇总了C++中JSGlobalObject::promiseCallbackStructure方法的典型用法代码示例。如果您正苦于以下问题:C++ JSGlobalObject::promiseCallbackStructure方法的具体用法?C++ JSGlobalObject::promiseCallbackStructure怎么用?C++ JSGlobalObject::promiseCallbackStructure使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JSGlobalObject
的用法示例。
在下文中一共展示了JSGlobalObject::promiseCallbackStructure方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: JSPromisePrototypeFuncCatch
EncodedJSValue JSC_HOST_CALL JSPromisePrototypeFuncCatch(ExecState* exec)
{
JSPromise* thisObject = jsDynamicCast<JSPromise*>(exec->thisValue());
if (!thisObject)
return throwVMError(exec, createTypeError(exec, "Receiver of catch must be a Promise"));
JSValue rejectCallback = exec->argument(0);
if (!rejectCallback.isUndefined()) {
CallData callData;
CallType callType = getCallData(rejectCallback, callData);
if (callType == CallTypeNone)
return throwVMError(exec, createTypeError(exec, "Expected function or undefined as as first argument"));
}
JSFunction* callee = jsCast<JSFunction*>(exec->callee());
JSGlobalObject* globalObject = callee->globalObject();
// 1. Let promise be a new promise.
JSPromise* promise = JSPromise::createWithResolver(exec->vm(), globalObject);
// 2. Let resolver be promise's associated resolver.
JSPromiseResolver* resolver = promise->resolver();
// 3. Let fulfillCallback be a new promise callback for resolver and its fulfill algorithm.
InternalFunction* fulfillWrapper = JSPromiseCallback::create(exec, globalObject, globalObject->promiseCallbackStructure(), resolver, JSPromiseCallback::Fulfill);
// 4. Let rejectWrapper be a promise wrapper callback for resolver and rejectCallback if rejectCallback is
// not omitted and a promise callback for resolver and its reject algorithm otherwise.
InternalFunction* rejectWrapper = wrapCallback(exec, globalObject, rejectCallback, resolver, JSPromiseCallback::Reject);
// 5. Append fulfillWrapper and rejectWrapper to the context object.
thisObject->appendCallbacks(exec, fulfillWrapper, rejectWrapper);
// 6. Return promise.
return JSValue::encode(promise);
}