123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- library promisedemo;
- {$mode objfpc}
- {$h+}
- uses nothreads, sysutils, job.js, variants;
- Type
- TApp = Class(TObject)
- function DoResolve(const aValue: Variant): Variant;
- procedure DoPromiseExecutor(const OnResolve, OnReject:TJSPromiseResolver);
- function ResolveTest: TJSPromise;
- procedure Run;
- end;
- function TApp.DoResolve(const aValue: Variant): Variant;
- begin
- Writeln('Wasm: in DoResolve: success. Argument vartype: ', vartype(aValue));
- if vartype(aValue)=varOleStr then
- Writeln('Wasm: DoResolve received value: ', VarToStr(aValue));
- result:=unassigned;
- end;
- procedure TApp.DoPromiseExecutor(const OnResolve, OnReject: TJSPromiseResolver);
- begin
- Writeln('Wasm: in promise executor');
- if not Assigned(OnResolve) then
- Writeln('Wasm ERROR: no resolve callback');
- if not Assigned(OnReject) then
- Writeln('Wasm ERROR: no reject callback');
- if Assigned(OnResolve) then
- OnResolve('This is a success value');
- end;
- function TApp.ResolveTest: TJSPromise;
- begin
- Result:=TJSPromise.Create(@DoPromiseExecutor);
- end;
- procedure TApp.Run;
- Var
- P : TJSPromise;
- begin
- try
- P:=ResolveTest;
- P._then(@DoResolve);
- except
- on E: Exception do
- Writeln(e.Message);
- end;
- end;
- var
- App : TApp;
- begin
- App:=TApp.Create;
- App.Run;
- end.
|