Skip to content

Instantly share code, notes, and snippets.

@kypflug
Created June 12, 2015 21:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kypflug/b2ad789a88fa072437ed to your computer and use it in GitHub Desktop.
Save kypflug/b2ad789a88fa072437ed to your computer and use it in GitHub Desktop.
static void CALLBACK PromiseContinuationCallback(JsValueRef task, void *callbackState)
{
// save async task in the callback.
*(void **)callbackState = task;
}
void runPromiseSample()
{
JsValueRef result;
JsValueRef task = JS_INVALID_REFERENCE;
JsValueRef callback = JS_INVALID_REFERENCE;
JsSetPromiseContinuationCallback(PromiseContinuationCallback, &callback);
JsRunScript(
L"//The JavaScript ES6 Promise code goes here" \
L"new Promise(" \
L" function(resolve, reject) {resolve('basic:success');}" \
L").then(function () {return new Promise(" \
L" function(resolve, reject) {resolve('second:success')}" \
L")});", JS_SOURCE_CONTEXT_NONE, L"", &result);
// execute async tasks stored in callback
while (callback! = JS_INVALID_REFERENCE) {
task = callback;
callback = JS_INVALID_REFERENCE;
JsCallFunction(task, nullptr, 0, &result);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment