12345678910111213141516171819202122232425262728293031323334 |
- Program manualpromise;
- uses browserconsole, JS, Web;
- function ResolveAfter2Seconds: TJSPromise;
- // returns immediately with a Promise,
- // which after 2 seconds gets resolved
- begin
- Result:=TJSPromise.new(procedure(resolve, reject : TJSPromiseResolver)
- begin
- window.setTimeout(procedure
- begin
- resolve('resolved');
- end,
- 2000); // wait 2 seconds
- end);
- end;
- procedure AsyncCall; async;
- var s: string;
- begin
- writeln('calling');
- s := await(string,resolveAfter2Seconds());
- // the await pauses this procedure returning to the caller
- // when the Promise from resolveAfter2Seconds gets resolved
- // this procedure is continued
- writeln(s); // expected output: 'resolved'
- end;
- begin
- AsyncCall;
- // calling AsyncCall returns immediately, while the Promise is waiting
- writeln('called');
- end.
|