askmom.pas 965 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. program askmom;
  2. {$mode objfpc}
  3. {
  4. Translated from
  5. https://scotch.io/tutorials/javascript-promises-for-dummies
  6. }
  7. uses
  8. browserconsole, JS, Web;
  9. var
  10. isMomHappy : Boolean = False;
  11. Procedure LetsAskMom;
  12. procedure MomDecides (resolve, reject : TJSPromiseResolver);
  13. begin
  14. if IsMomHappy then
  15. Resolve(New(['brand','Samsung','Color','Black']))
  16. else
  17. Reject(TJSError.New('Mom is not happy'));
  18. end;
  19. Function Disappointed(aValue : JSValue): JSValue;
  20. begin
  21. Writeln('No present because: ',aValue);
  22. end;
  23. Function Showpresent(aValue : JSValue): JSValue;
  24. begin
  25. Writeln('Received : ',aValue);
  26. end;
  27. Var
  28. willIGetNewPhone : TJSPromise;
  29. begin
  30. TJSPromise.New(@MomDecides).
  31. _Then(@ShowPresent).
  32. Catch(@Disappointed);
  33. end;
  34. begin
  35. Writeln('Did something bad, making mom unhappy');
  36. isMomHappy:=False;
  37. LetsAskMom();
  38. Writeln('Made up with mom, making her happy again');
  39. isMomHappy:=True;
  40. LetsAskMom();
  41. end.