Guest User

Untitled

a guest
Oct 22nd, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "errors"
  5. "fmt"
  6. "github.com/chebyrash/promise"
  7. )
  8.  
  9. func main() {
  10.  
  11. var p = promise.New(func(resolve func(interface{}), reject func(error)) {
  12.  
  13. // Faça algo de forma assíncrona
  14. const sum = 2 + 2
  15.  
  16. // Se o seu trabalho foi bem sucedido, chame resolve () passando o resultado.
  17. if sum == 4 {
  18. resolve(sum)
  19. return
  20. }
  21.  
  22. // Se você encontrou um erro, chame reject () passando o erro.
  23. if sum != 4 {
  24. reject(errors.New("2 + 2 não é igual 4"))
  25. return
  26. }
  27.  
  28. // Se você esqueceu de verificar se há erros e sua função entra em pânico, a promise
  29. // automatically reject.
  30. // panic() == reject()
  31. })
  32.  
  33. // Uma promise é um objeto retornado ao qual você anexa retornos de chamada
  34. p.Then(func(data interface{}) interface{} {
  35. fmt.Println("Resultado:", data)
  36.  
  37. // soma o resultado
  38. return data.(int) + 3
  39. })
  40.  
  41. // Os retornos de chamada podem ser adicionados mesmo após o sucesso ou a falha da operação assíncrona.
  42. // Vários retornos de chamada podem ser adicionados chamando. Then ou .Catch várias vezes,
  43. // para ser executado independentemente em ordem de inserção.
  44. p.
  45. Then(func(data interface{}) interface{} {
  46. fmt.Println("Resultado novo:", data)
  47. return nil
  48. }).
  49. Catch(func(error error) error {
  50. fmt.Println("Error during execution:", error.Error())
  51. return nil
  52. })
  53.  
  54. // Como as chamadas de retorno são executadas de forma assíncrona, você pode esperar por elas.
  55. p.Await()
  56. }
Add Comment
Please, Sign In to add comment