React-native: рдЯрд╛рдЗрдорд┐рдВрдЧ рдореЗрдВ рдЕрд▓рд╛рд░реНрдордореИрдирдЧрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ, рддрд╛рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдЪрд┐рдд рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдорд╛рд░реНрдЪ 2017  ┬╖  173рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react-native

рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдпрд╣ рдЯрд╛рдЗрдорд░ рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрдВ рдЬрд╛рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЯрд╛рдЗрдорд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬрд╛рдЧреГрдд рд░рдЦрддрд╛ рд╣реИред

рд╣рдореЗрдВ рдПрдХ рдХрдЯ рдСрдл рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕ рдкрд░ рд╣рдо framecallbacks рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрдорд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрд▓рд╛рд░реНрдордореИрди рдФрд░ рд╣реИрдВрдбрд▓рд░.рдкреЛрд╕реНрдЯрдбреЗрд▓рдпреЗрдб рдХреЛ рд╕реМрдВрдкрддреЗ рд╣реИрдВред

Bug JavaScript Android

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ рд╕реНрдХреЗрд╡-рд╣реЗрдбрд▓реЗрд╕ рдУрдкрд┐рдирд┐рдпрди рдЗрдирдХрдорд┐рдВрдЧред :)

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рд╡реЗ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣реЗ рд╣реИрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рди рдХрд░реЗрдВ, рдХреБрдЫ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдРрд╕реЗ рдРрдк рджреЗрдЦреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрджрд╕реНрде рдиреЛрдЯрд┐рд╕ рднреАред рддрдм рдЖрдкрдХрд╛ рдРрдк рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╣реИрд░рд╛рди рд░рд╣ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреЛрдВред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЗрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХрд╛ рд╕реЗрдЯрдЕрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░рдЦ-рд░рдЦрд╛рд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рднреА рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ рдФрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВред

рдореЗрд░реА рд╕рд▓рд╛рд╣ рд╣реИ, рдЗрд╕ рд╕реВрддреНрд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рд╕реНрдорд╛рд░реНрдЯ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрд╕ рдЙрддреНрддрд░ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдмреАрдЪ (рдпрджрд┐ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ / рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ) рддреЛ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред

рдЯреА рдПрд▓; рдбреЙ;

рд╣рд╛рдВ, рдЖрдк рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рд╣рд░ рдЕрдм рдФрд░ рдлрд┐рд░ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░реНрдпрд╡рд╛рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕рднреА 173 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдорд╣рд╛рди рд╕реБрдзрд╛рд░!

рдпрд╣ socket.io рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░реЗрдЧрд╛ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 85000ms рдХрд╛ рдЯрд╛рдЗрдорд░ рд░рдЦрддрд╛ рд╣реИред RN рдорд╛рд╕реНрдЯрд░ рдкрд░ рдереНрд░реЗрд╢реЛрд▓реНрдб 60000ms ред

рдФрд░ рдлрд╛рдпрд░рдмреЗрд╕ рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рдлрд╛рдпрд░рдмреЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИ

Setting a timer for a long period of time, i.e. multiple minutes, is a performance and correctness issue on Android as it keeps the timer module awake, and timers can only be called when the app is in the foreground. See https://github.com/facebook/react-native/issues/12981 for more info. (Saw setTimeout with duration 111862ms)

рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдХреИрд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ ...

рдореБрдЭреЗ рдлрд╛рдпрд░рдмреЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИред рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП?

рдореБрдЭреЗ рдлрд╛рдпрд░рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИред

"firebase": "^3.9.0",
"react-native": "0.44.0"

рдПрдХ рд╣реА рдореБрджреНрджрд╛ ( 85000ms ) рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ firebase ред рдкреИрдХреЗрдЬреЛрдВ рдХреА рдореЗрд░реА рд╕реВрдЪреА:

  "dependencies": {
    "apisauce": "0.11.0",
    "format-json": "1.0.3",
    "lodash": "4.17.4",
    "markdown-it": "^8.3.1",
    "native-base": "^2.1.3",
    "normalizr": "^3.2.2",
    "prop-types": "^15.5.10",
    "querystringify": "1.0.0",
    "ramda": "0.23.0",
    "react": "16.0.0-alpha.6",
    "react-markdown": "^2.5.0",
    "react-native": "0.44.0",
    "react-native-animatable": "1.2.0",
    "react-native-config": "0.4.2",
    "react-native-device-info": "0.10.2",
    "react-native-drawer": "2.3.0",
    "react-native-htmlview": "0.9.0",
    "react-native-i18n": "1.0.0",
    "react-native-linear-gradient": "^2.0.0",
    "react-native-photo-view": "^1.2.0",
    "react-native-router-flux": "3.39.1",
    "react-native-scrollable-tab-view": "*",
    "react-native-share": "^1.0.20",
    "react-native-vector-icons": "4.1.1",
    "react-navigation": "^1.0.0-beta.9",
    "react-redux": "5.0.4",
    "redux": "3.6.0",
    "redux-persist": "4.6.0",
    "redux-saga": "0.15.3",
    "reduxsauce": "0.4.1",
    "seamless-immutable": "7.1.2"
  },
  "devDependencies": {
    "ava": "^0.18.2",
    "babel-eslint": "^7.1.1",
    "babel-preset-es2015": "^6.18.0",
    "enzyme": "^2.6.0",
    "husky": "^0.13.1",
    "ignite-animatable": "^0.3.1",
    "ignite-dev-screens": "^2.0.0-beta.9",
    "ignite-i18n": "^0.1.1",
    "ignite-ir-boilerplate-2016": "^0.2.2",
    "ignite-vector-icons": "^0.2.1",
    "mockery": "^2.0.0",
    "nyc": "^10.1.2",
    "react-addons-test-utils": "^15.3.1",
    "react-dom": "^15.4.0",
    "react-native-mock": "^0.3.1",
    "reactotron-apisauce": "^1.7.0",
    "reactotron-react-native": "^1.7.0",
    "reactotron-redux": "^1.7.0",
    "reactotron-redux-saga": "^1.7.0",
    "snazzy": "^6.0.0",
    "standard": "^8.6.0"
  }

рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ 0.44.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рднреА рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

Setting a timer for a long period of time, i.e. multiple minutes, is a performance and correctness issue on Android as it keeps the timer module awake, and timers can only be called when the app is in the foreground. See https://github.com/facebook/react-native/issues/12981 for more info. (Saw setTimeout with duration 85000ms)

рд╣рд╛рдп рд╡рд╣рд╛рдБ рд▓реЛрдЧ .. рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддреНрд╡рд░рд┐рдд рдХрд╛рдо рд╣реИред рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

react-native 0.44 react 16.0.0-alpha.6 feathers-socketio 1.6.0

рдЬрдм рдореИрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рддреЛ рдЗрд╕рдХреА рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рдкреЙрдкрд┐рдВрдЧ рд╣реИ .. рд╡реИрд╕реЗ рднреА рдХреНрдпрд╛ рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдЫрд┐рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдБ ??

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБ firebase 3.9.0 рдХреЗ рд╕рд╛рде

рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк console.ignoredYellowBox = ['Setting a timer']; рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ

@ рд╕реНрдХреЗрд╡-рд╣реЗрдбрд▓реЗрд╕ рдУрдкрд┐рдирд┐рдпрди рдЗрдирдХрдорд┐рдВрдЧред :)

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рд╡реЗ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣реЗ рд╣реИрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рди рдХрд░реЗрдВ, рдХреБрдЫ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдРрд╕реЗ рдРрдк рджреЗрдЦреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрджрд╕реНрде рдиреЛрдЯрд┐рд╕ рднреАред рддрдм рдЖрдкрдХрд╛ рдРрдк рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╣реИрд░рд╛рди рд░рд╣ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреЛрдВред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЗрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХрд╛ рд╕реЗрдЯрдЕрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░рдЦ-рд░рдЦрд╛рд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рднреА рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ рдФрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВред

рдореЗрд░реА рд╕рд▓рд╛рд╣ рд╣реИ, рдЗрд╕ рд╕реВрддреНрд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рд╕реНрдорд╛рд░реНрдЯ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрд╕ рдЙрддреНрддрд░ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдмреАрдЪ (рдпрджрд┐ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ / рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ) рддреЛ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред

рдЯреА рдПрд▓; рдбреЙ;

рд╣рд╛рдВ, рдЖрдк рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рд╣рд░ рдЕрдм рдФрд░ рдлрд┐рд░ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░реНрдпрд╡рд╛рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

@ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдХреНрдЯреЛрдЯреНрд░реЙрди рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдХреНрдЯреЛрдЯреНрд░реЙрди рджреНрд╡рд╛рд░рд╛

рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдХреЗрд╡рд▓ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
... рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореЗрд░рд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХрднреА-рдХрднреА рдзреАрдорд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдХрд╛рд░рдг рд╣реИред

@imamatory рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрд╕рд▓реА рд╕рдорд╛рдзрд╛рди рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИ

рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рд╣рд▓ рдорд┐рд▓рд╛:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдврдиреА рд╣реЛрдЧреА: рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ / рдХреЛрд░ / рдЯрд╛рдЗрдорд░ / JSTimer; js
рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЕрд╡рдзрд┐ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрд╕ рдХреЙрдиреНрд╕реНрдЯреЗрдВрд╕ MAX_TIMER_DURATION_MS рдХреЛ рдмрджрд▓рдирд╛ рд╣реИ, рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ!

@nicolasZZ рд╣рд╛рдп, рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп JSTimer рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ?

@nicolasZZ @AmroAly рдореЗрд░реЗ рдорди рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрд╕реНрдерд┐рд░ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╣реИред

console.ignoredYellowBox = [
    'Setting a timer'
]

@ рд╕реНрдХреЗрд╡-рд╣реЗрдбрд▓реЗрд╕ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрдЪреНрдЫрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдХреЛрд╖реНрдардХ рдХреЗ рдмреАрдЪ "рджрд░реНрдЬ" рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

@rigobcastro рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ рдХрд╖реНрдЯрдкреНрд░рдж рдЕрд▓рд░реНрдЯ рдЫреБрдкрд╛рддрд╛ рд╣реИред

@ DZuz14 рдпрд╣ рднрдпрд╛рдирдХ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдПрдХ рдкреАрдЖрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдзрдиреНрдпрд╡рд╛рдж ЁЯСН

рд╣рд╛рдп ~
рдореИрдВрдиреЗ рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред nodejs and RN44 or RN 45
рдореИрдВрдиреЗ рдЗрд╕ рд╕рдордп рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреАред

рдореБрдЭреЗ рдЗрд╕рдХрд╛ рд╣рд▓ рдорд┐рд▓ рдЧрдпрд╛
reference reactotron PR

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рд░реНрд╡рд░ рдиреЛрдбрдЬ рдФрд░ рд╕реНрдХреЛрдХреИрдЯ.рдЖрдИрдУ

const express = require('express')
const app = express()
const server = require('http').Server(app)
const io = require('socket.io')(server, {pingTimeout: 30000})

рдзрдиреНрдпрд╡рд╛рдж!

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдФрд░ рдореИрдВ рд▓реЙрдЧрд┐рди рдФрд░ рд╕рд╛рдЗрдирдЕрдк рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдХреЗ рд╕рд╛рде рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣ рдкреАрд▓реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА, рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? Stackoverlow (https://stackoverflow.com/questions/44603362/setting-a-timer-for-a-long-period-of-time-ie-multiple-minutes) рдореЗрдВ рдореЗрд░реЗ рдкреНрд░рд╢реНрди рдХрд╛ рд▓рд┐рдВрдХ

рд╕рд╛рднрд╛рд░ @ DZuz14
рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рддрдм рд▓рдЧреА рдЬрдм рдореИрдВрдиреЗ react-native run-android рдЪрд▓рд╛рдП

D:\Projects 2016\Web\Android\mohajerkade-android\android\app\src\main\java\com\mohajerkade\AlarmManagerModule.java:40: error: cannot find symbol
       Intent intent = new Intent(context, AlarmReceiver.class);
                                           ^
  symbol:   class AlarmReceiver
  location: class AlarmManagerModule
1 error
:app:compileDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

рдореИрдВ рд▓реЙрдЧрд┐рди рдФрд░ рд╕рд╛рдЗрдирдЕрдк рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓рдХ рдХреЗ рд╕рд╛рде рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣ рдкреАрд▓реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА,
1: рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?
2: рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдореИрдВрдиреЗ рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рд╕реЗ рдкреВрдЫрд╛: (https://stackoverflow.com/questions/44603362/setting-a-timer-for-a-long-period-of-time-ie-multiple-minutes)
рдореИрдВрдиреЗ рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Google Firebase рдЯреАрдо рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛: (https://github.com/firebase/firebase-js-sdk/issues/97)

@ DZuz14 рдореИрдВ @saeedhei рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рд╡рд╛рд▓ рдорд┐рд▓рд╛ рд╣реИред

рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдо firebase рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЗрди рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрд▓рд╛рд░реНрдо рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдЕрд▓рд╛рд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП firebase рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рднреАрддрд░ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛?

рдзрдиреНрдпрд╡рд╛рдж @ DZuz14

рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк firebase рдирд╛рдордХ npm рдкреИрдХреЗрдЬ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЬрдЧрд╣реЛрдВ рдкрд░ setTimeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдФрд░ рдиреЛрдб.рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреА рдЧрдИ рдереАред react-native рдПрдХ рдиреЛрдб.рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рдХреА рддрд░рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдлреЛрди рдкрд░ рдЪрд▓рддрд╛ рд╣реИ - рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрддрд╛рддреА рд╣реИ - рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдмреИрдЯрд░реА рдХреЛ рд╕реВрдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдЕрд╡рд╛рдВрдЫрд┐рдд рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред ред

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдлрд╛рдпрд░рдмреЗрд╕ рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ react-native рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдкреИрдХреЗрдЬ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

@BerndWessels https://www.npmjs.com/package/react-native-firebase рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛ рд╣реИ? рдХрд╣рддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрд╢реА рдзрд╛рдЧреЗ рдкрд░ рдлрд╛рдпрд░рдмреЗрд╕ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред

@ DZuz14 рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХрд░реВрдБрдЧрд╛ред

рдХрдВрд╕реЛрд▓ .ignoredYellowBox = [
'рдПрдХ рдЯрд╛рдЗрдорд░ рдХреА рд╕реНрдерд╛рдкрдирд╛'
]

@rigobcastro рдЗрд╕ рдХреЛрдб рдХреЛ рдореИрдВ рдХрд╣рд╛рдВ рд╕реЗ рдЗрдирдкреБрдЯ рдпрд╛ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

@ Jazz747 рдЕрдкрдиреА рд╕реЗрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП app.js, index.android.js рдпрд╛ index.n.s.

console.ignoredYellowBox = [ 'Setting a timer' ]
рдпрд╣ рдХреЛрдб рдХреЗрд╡рд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЗ рдЕрдВрджрд░ рдЪреЗрддрд╛рд╡рдиреА рдЫрд┐рдкрд╛рддрд╛ рд╣реИред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдХреЗ рдЕрдВрджрд░ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдХреНрдпрд╛ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрд░рдПрди рдЯреАрдо рдпрд╛ рд╕рдореБрджрд╛рдп рдХрд╛ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдЪреЗрддрд╛рд╡рдиреА рдкреЙрдкрдЕрдк рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣рд╛рдВ рдХреЛрдИ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдпрд╛ рд╕реБрдЭрд╛рд╡?

@SuhairZain рд╕рдм рдХреБрдЫ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ RN рдХреЛ рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ

@rigobcastro рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд╕рд╛рде setInterval() рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ 5 рдорд┐рдирдЯ рдерд╛)ред рддреЛ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ 3 рдкрд╛рд░реНрдЯреА рдХреЗ рдХрд╛рдореЛрдВ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред

BTW, рдореИрдВрдиреЗ рддрдм рд╕реЗ рдпрд╣рд╛рдВ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдвреВрдВрдв рд▓реА рд╣реИ: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдкреГрд╖реНрдарднреВрдорд┐-рдЯрд╛рдЗрдорд░ рдЬреЛ рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

@SuhairZain рд╣рд╛рдБ рдареАрдХ рд╣реИ! рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкрд░рд┐рд╡рд╛рдж рдХреЗ рд╕рд╛рде рдереА, рд▓реЗрдХрд┐рди рд╕реНрд╡рд╛рдореА рдиреЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреБрдЫ setInterval() рдмрджрд▓ рджрд┐рдпрд╛ рдерд╛) рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рджреА рдЧрдИ рдереАред

рдЕрдЪреНрдЫреА рд╕рд┐рдлрд╛рд░рд┐рд╢, рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЕрднреА рднреА рд╕рдордЭ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред

rn: 0.45.1
рдлрд╛рдпрд░рдмреЗрд╕: 4.1.3

рдкреНрд░рд┐рдп @escalepion рдореИрдВрдиреЗ

@escalepion рдпрджрд┐ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд▓ рд░рд╣реЗ рд╕рдордп рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдКрдкрд░ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

@SuhairZain рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рдерд╛ рдХрд┐

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдЯрд┐рдк рд╣реИ рдХрд┐ рдХрд┐рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдирд╛ рд╣реИ? рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЖрд░рдПрди рдХреЛ 0.46 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдЕрдЪрд╛рдирдХ рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреАред рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдЙрдирдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред

рдЪреАрдпрд░реНрд╕!

@ abeltje1 , рдпрджрд┐ рдЖрдк рдпрд╣ рдкрддрд╛

@liketurbo рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреЗ рд▓рд┐рдП

рдореИрдВ рд╣рд░ 30 рдорд┐рдирдЯ рдореЗрдВ рдПрдкреАрдЖрдИ рдЯреЛрдХрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП redux-saga рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рд▓рдВрдмреЗ рд╕рдордп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╣реИред рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдЕрдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ рдЬрд┐рдирдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

рдлрд┐рд░ рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рд╣реИ? рдХреНрдпрд╛ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ / рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдореИрдВ рдХрд┐рд╕реА рдПрд▓рдПрд▓рдЯреА (рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬреАрд╡рд┐рдд рд▓реЗрдирджреЗрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ?

рдпрджрд┐ рдПрд▓рдПрд▓рдЯреА рдареАрдХ рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? AlarmManager рд╕рдордп рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░?

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж ;)

рдореБрдЭреЗ @sospedra рдХреЗ рд╕рдорд╛рди рд╣реА рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИред рдореИрдВ redux-saga рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕реА рдЧрд╛рдерд╛ рд╣реИ рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╣рд░ 3 рдорд┐рдирдЯ рдореЗрдВ рдРрдк рдХреЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЧрд╛рдерд╛ рдореЗрдВ yield call(delay, 3 * 60000); рдХрд╛ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореБрдЭреЗ рдпрд╣ "рд╕рдордп рдХреА рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдирд╛ ..." рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред

рдореИрдВ рдпрд╣ рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕реБрдЭрд╛рдП рдЧрдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЕрдкрдирд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджреВрдВ рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА? рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдХрд┐ рдЯрд╛рдЗрдорд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╕рдордп рдкрд░ рдирд┐рдХрд╛рд▓ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╣реИ?

рдпрджрд┐ 3 рдорд┐рдирдЯ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛?

рдЕрднреА рднреА рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдореВрд▓ рдирд┐рд╡рд╛рд╕реА Android рд╡рд┐рдХрд╛рд╕ рд╣реИ

рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ? рдХрд┐рд╕реА рдХреЛ рднреА рд╣рд▓ рдорд┐рд▓ рдЧрдпрд╛?

рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реБрдП рдореБрдЭреЗ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИред

рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╕реНрд╡рдпрдВ рд╕реЗ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдкреГрд╖реНрдарднреВрдорд┐-рдЯрд╛рдЗрдорд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ README рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ , рдпрджрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрднрд╡рддрдГ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдореБрджреНрджрд╛ рдЙрдард╛рдПрдВ / рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдкрд░реЛрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ , рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдореЗрд░реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред https://github.com/facebook/react-native/issues/12981#issuecomment -331074444 рдФрд░ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗред

рдХреГрдкрдпрд╛ Android рдкрд░ рднреА рд╢рд╛рдирджрд╛рд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд░реЗрдВред

рдЬреИрд╕рд╛ рдХрд┐ @SuhairZain рдиреЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдкреГрд╖реНрдарднреВрдорд┐-рдЯрд╛рдЗрдорд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╕рд╛рдл рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИ

рдХреНрдпреЛрдВрдХрд┐ socket.io рдореЗрдВ 85ms рдХрд╛ рдЯрд╛рдЗрдорд░ рд╣реИ

FWIW рдпрд╣ рдХреЗрд╡рд▓ рдореЗрд░реЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореИрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп Reactotron рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ ...

рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкрд╛рдЧрд▓ рд╣реЛрдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдореИрдВ рдЕрдм рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдореБрджреНрджрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рд╕реЗ рдХрдо рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рддреНрд░реБрдЯрд┐ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреА рджреЗрд░реА рдХреЗ рд╕рд╛рде setTimeout рдпрд╛ setInterval рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдмрдВрджрд░ рдкреИрдЪ рд╡реИрд╢реНрд╡рд┐рдХ setTimeout рдФрд░ setInterval рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдкреГрд╖реНрдарднреВрдорд┐-рдЯрд╛рдЗрдорд░ рдХреЗ рдмрдЬрд╛рдп рд╣реИ:

import BackgroundTimer from 'react-native-background-timer';

setTimeout = BackgroundTimer.setTimeout;
setInterval = BackgroundTimer.setInterval;
clearTimeout = BackgroundTimer.clearTimeout;
clearInterval = BackgroundTimer.clearInterval;

рдЗрд╕ рдХреЛрдб рдХреЛ рдЕрдкрдиреЗ рд╢реБрд░реБрдЖрддреА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдореЗрдВ рдХрд╣реАрдВ рд▓рд┐рдЦрд┐рдП, рдЕрдзрд┐рдорд╛рдирддрдГ index.android.js рдпрд╛ index.ios.js рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЬрд╣рд╛рдБ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдорд┐рд▓реЗрдЧреАред

@SuhairZain : рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡ рдЕрднреА рддрдХ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреБрдЫ

setTimeout = BackgroundTimer.setTimeout.bind(BackgroundTimer)
setInterval = BackgroundTimer.setInterval.bind(BackgroundTimer)
clearTimeout = BackgroundTimer.clearTimeout.bind(BackgroundTimer)
clearInterval = BackgroundTimer.clearInterval.bind(BackgroundTimer)

@ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдореИрдВрдиреЗ рдЖрдкрдХрд╛ рдХреЛрдб рдореЗрд░реЗ app.js рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓ рдЧрдпрд╛

рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛрдИ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ ('RNBackgroundTimer.setTimeout' рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди)

@realtebo рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдкреГрд╖реНрдарднреВрдорд┐-рдЯрд╛рдЗрдорд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдкреВрд░реА рдирд╣реАрдВ рдХреА рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреЗ README рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, react-native link рдЪрд▓рд╛рдХрд░ рдпрд╛ рдХреЛрдХреЛрдкреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред

@ рдКрдВрдЪрд╛рдИ : рдХреНрдпрд╛ рдЖрдк react-native link рдЪрд▓рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ?

npm рд╕реНрдерд╛рдкрд┐рдд -g рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдХреНрд▓реА
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд▓рд┐рдВрдХ
C: \ Users \ Realtebo \ Downloads \ Manager2 \ node_modules (54ms) рдореЗрдВ рд╕реАрдорд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреЛ рд╕реНрдХреИрди рдХрд░рдирд╛
react-native link рдХреНрд░рд┐рдПрдЯ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рдРрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрд╕реНрдЯрдо рджреЗрд╢реА рдХреЛрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП https://github.com/react-community/create-react-native-app/blob/master/EJECTING.md рджреЗрдЦреЗрдВред

рдореИрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ .... рдЗрд╕рд▓рд┐рдП, .. рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдУрд╣, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рдРрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдореИрдВрдиреЗ рдХрднреА рдЦреБрдж рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ react-native: ^0.49.3 рд╕рд╛рде рдХреБрдЫ рдореБрджреНрджреЗ рдорд┐рд▓реЗ ...

рд╕реАрдПрдл https://github.com/ocetnik/react-native-background-timer/issues/65

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж;)

рдирдорд╕реНрддреЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдореИрдВ 0.49 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛

export function saveUserData(userInfo){
  return (dispatch) => {
    dispatch(saveDataRequest())
    const userId = firebase.auth().currentUser.uid;
    return firebase.database().ref('users/' + userId).set(userInfo)
      .then(() => {
        dispatch(saveDataSuccess());
        dispatch(NavigationActions.navigate({ routeName: 'TabContactNavigation' }))
      })
      .catch((error) => {
        dispatch(saveDataFailure(error))
      });
  }
}

рдКрдкрд░ Action redux рдореЗрдВ рд╣реИ, рдЬреЛ redux-thunk рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ .. рдЬрдм рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ firebase рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ saveDataSuccess() рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЕрдм рдореБрдЭреЗ рдпрд╣рд╛рдБ const userId = firebase.auth().currentUser.uid рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╕рдВрджреЗрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕реНрдХреНрд░реАрди рд╢реЙрдЯ рд╣реИред (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП) рдпрд╛ рд╢рд╛рдпрдж рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдкрдХреЗ рдорджрдж рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж

warning

warning2

рдЕрд░реЗ, рдЪреЗрддрд╛рд╡рдиреА рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдШрдЯрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдФрд░ рд╣рд╛рдБ, рд▓рд╛рдЗрди рдХрд╛рд╕реНрдЯ userId = firebase.auth ()ред currentUser.uid; рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд╛рджрд╛ рд╣реИ рдФрд░ рдЬрдм рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрднреА рднреА рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА userInfo рдЪрд░ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

рдореИрдВ рдорд╛рди рд▓реВрдВрдЧрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ userInfo рдлрд╛рдпрд░рдмреЗрд╕ рдСрд░рд┐рдЬрдирд▓ рд▓реЙрдЧрд┐рди рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдореЗрдВ рдпреВрдЖрдИрдбреА рд╣реИ

рдирд┐рд░реНрдпрд╛рдд рд╕рдорд╛рд░реЛрд╣ saveUserData (userInfo) {
рд╡рд╛рдкрд╕реА (рдкреНрд░реЗрд╖рдг) => {
рдкреНрд░реЗрд╖рдг (saveDataRequest ())
// const userId = firebase.auth ()ред currentUser.uid;
рд╡рд╛рдкрд╕реА firebase.database ()ред Ref ('рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ /' + userInfo.uid) .set (userInfo)
.then () => {
рдкреНрд░реЗрд╖рдг (saveDataSuccess ());
рдкреНрд░реЗрд╖рдг (рдиреЗрд╡рд┐рдЧреЗрд╢рдирдПрдХреНрдЯреЗрд╢рди.рдирд╡реЗрдЯ ({рдорд╛рд░реНрдЧрдирд╛рдо: ont TabContactNavigation тАЩ}))
})
.рдХрдЪ ((рддреНрд░реБрдЯрд┐) => {
рдкреНрд░реЗрд╖рдг (saveDataFailure (рддреНрд░реБрдЯрд┐))
});
}
}
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдмреБрд░реЗ рдЕрдВрдЧреНрд░реЗрдЬреА = рдкреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ

рдкрд░рдорд╛рдирдВрдж

рдПрд▓ 23/10/2017, рдПрдХ рд▓рд╛рд╕ 23:59, рдпрд╛рд╕рд┐рд░ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com escribi├│:

рдирдорд╕реНрддреЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ 0.49 рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛

рдирд┐рд░реНрдпрд╛рдд рд╕рдорд╛рд░реЛрд╣ saveUserData (userInfo) {
рд╡рд╛рдкрд╕реА (рдкреНрд░реЗрд╖рдг) => {
рдкреНрд░реЗрд╖рдг (saveDataRequest ())
const userId = firebase.auth ()ред currentUser.uid;
рд╡рд╛рдкрд╕реА firebase.database ()ред Refред ('рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ /' + userId) .set (userInfo)
.then () => {
рдкреНрд░реЗрд╖рдг (saveDataSuccess ());
рдкреНрд░реЗрд╖рдг (рдиреЗрд╡рд┐рдЧреЗрд╢рдирдПрдХреНрдЯреЗрд╢рди.рдирд╡реЗрдЯ ({рдорд╛рд░реНрдЧрдирд╛рдо: ont TabContactNavigation тАЩ}))
})
.рдХрдЪ ((рддреНрд░реБрдЯрд┐) => {
рдкреНрд░реЗрд╖рдг (saveDataFailure (рддреНрд░реБрдЯрд┐))
});
}
}
рдКрдкрд░ рдПрдХреНрд╢рди рдЗрди рд░реЗрдбрдХреНрд╕ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░реЗрдбрдХреНрд╕-рдердВрдХ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдПрдХ рдмрдЯрди рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдлрд╛рдпрд░рдмреЗрд╕ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рд╕реЗрд╡ рдХрд░реЗрдВDataSuccess () рдФрд░ рдлрд┐рд░ рдЕрдЧрд▓реЗ рдЯреИрдм рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдВред
рдЕрдм рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдВрджреЗрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдкрд░ userId = firebase.auth () currentUser.uid рд╣реЛ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕реНрдХреНрд░реАрди рд╢реЙрдЯ рд╣реИред (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП) рдпрд╛ рд╢рд╛рдпрдж рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдкрдХреЗ рдорджрдж рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж

https://user-images.githubusercontent.com/12644122/31925375-94b7c464-b89d-11e7-889d-e9d00866ff73.png
https://user-images.githubusercontent.com/12644122/31925386-9e9bf3c4-b89d-11e7-9eaa-65147879629f.png
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреА рд╕рджрд╕реНрдпрддрд╛ рджреА рдЧрдИ рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub https://github.com/facebook/react-native/issues/12981#issuecomment-338874018 рдкрд░ https://github.com/nactions/unsubscribe-auth/ рдкрд░ рдореНрдпреВрдЯ

рдЖрдорддреМрд░ рдкрд░ рдореИрдВ рдПрдХ redux рд╕реНрдЯреЛрд░ рдореЗрдВ рд╕реЗрд╡ рдХрд░рддрд╛ рд╣реВрдВ userinfoред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд╕ рдЬрд░реВрд░рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВред
... рд▓реЗрдХрд┐рди ... рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореИрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рд╕рд┐рдЧреНрдирд▓-рд▓рд╛рдЗрдмреНрд░реЗрд░реА (300000ms) рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛

socket.io рд╕рд░реНрд╡рд░ рд╡рд┐рдХрд▓реНрдк
pingTimeout (60000) + pingInterval (25000) <= 60000

рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдЕрднреА рднреА рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ ...

рдмрд╕ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА (рдЕрдЧрд╕реНрдд рд╕реЗ) рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреА рднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ: рд╣рдо рдЗрд╕ рдЕрд▓рд╛рд░реНрдо рдореИрди рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВ, рдмрд╕ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓реЗрди-рджреЗрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛

cc @shergin @cpojer @javache @hramos

рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рд╕рд┐рдЧреНрдирд▓ (рдПрдордПрд╕-рд╕рд┐рдЧреНрдирд▓рд░-рдХреНрд▓рд╛рдЗрдВрдЯ) рдХреЗ рд▓рд┐рдП рдПрдХ рддрдпрд╢реБрджрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд┐рдВрдЧреЗрд░реЗрдВрдерд╡рд▓ (300000) рд╣реИ:
connection.start({ pingInterval: 5000, jsonp: true, transport: ['webSockets', 'serverSentEvents', 'longPolling']}).done(() => { console.log('Now connected, connection ID =' + connection.id) })

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдкреЛрдореЗрд▓реЛ (80000ms) рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛

console.ignoredYellowBox = ['Setting a timer'];

рдпрд╣ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдлреА рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рд░рд┐рдореЛрдЯ рд╕реЗ рдбрд┐рдмрдЧ рдХрд░реЗрдВрдЧреЗ рддрдм рдЖрдкрдХреЛ рдХреНрд░реЛрдо рдХреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗрдЧреА

рдХрдВрд╕реЛрд▓ рдХреЛ рдЗрдЧреНрдиреЛрд░ рдХреЛрдб рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рдХрд╣рд╛рдВ рд╣реИ? '

- рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд╕рдВрдХреЗрдд рдорд┐рд▓рд╛ stackexchange рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореЗрд░реЗ App.js рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:

class App extends Component {
  constructor() {
    super();

    console.ignoredYellowBox = [
      'Setting a timer'
    ];
  }
...
}
````

and also tried in my index.js as <strong i="8">@haikyuu</strong> just recommended..

'рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ' рд╕реЗ рдЖрдпрд╛рдд {AppRegistry};
рд╕реЗ рдЖрдпрд╛рдд рдРрдк './App';

рдХрдВрд╕реЛрд▓ .ignoredYellowBox = [
'рдПрдХ рдЯрд╛рдЗрдорд░ рдХреА рд╕реНрдерд╛рдкрдирд╛'
];

AppRegistry.registerComponent ('manager', () => App);
`` ``

рджреЛрдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛

@CopyJosh рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ: index.js

рдЗрд╕рд▓рд┐рдП рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ? рдЕрдм 8+ рдорд╣реАрдиреЗ рд╣реЛ рдЧрдП рд╣реИрдВред

?

рдЪрд▓реЛ рдпрд╣ рддреЛ рд╣рд▓ рд╣реЛред рд╣рдореЗрдВ рд╢рд╛рдпрдж рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛:

рдП) рдПрдХ рдЖрд╕рд╛рди рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдПрдкреАрдЖрдИ рдЬрд┐рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ AlarmManagers рддрд░реАрдХреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрджреНрдзрд┐рдорд╛рди рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЛрдб рдореЗрдВ рдирд┐рдореНрди рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рджреЗрд╢реА рдЕрд▓рд╛рд░реНрдо рдореИрдирдЬрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рд╛рд░реНрдо рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
AlarmMgr.setInexactRepeating(arg1, arg2...)

рдмреА) рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, AlarmManager рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рд╛рд░реНрдо рд╕реЗрдЯ рдХрд░рдирд╛ рдЬреЛ рдХрд┐ AlarmManager рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП "рд▓рдВрдмрд┐рдд рдЖрд╢рдп" рдХрд╣рд▓рд╛рддрд╛ рд╣реИред рдЖрдк рдЕрд▓рд╛рд░реНрдордореИрди рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ "рдХрд╛рд░реНрдп" рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХрд┐ рдЖрдкрдХреЛ рдЕрд▓рд╛рд░реНрдо рдореИрдирдЬрд░ (рдпрд╛ рдПрдХ рдХрд╕реНрдЯрдо рд░рд┐рдПрдХреНрдЯ рдЬрд╛рд╡рд╛ рд╡рд┐рдзрд┐) рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рднреЗрдЬреЗрдВ, рдпрд╣ рдмрддрд╛рдПрдВ рдХрд┐ рдЕрд▓рд╛рд░реНрдо рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред

рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП? рдЕрдзрд┐рдХ рдпрд╣рд╛рдБ AlarmManager рдкрд░ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛

btw - рдХреНрдпрд╛ рдпрд╣ рдЕрдХреНрд╖рдорддрд╛ (рд▓рдВрдмреЗ, рдмрд╣реБ-рдорд┐рдирдЯ рдХреЗ рд╕рдордп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд) рдЖрд░рдПрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рд╣реИ> 0.43? рдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдпрд╣ рд╣реИ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЖрд░рдПрди> 0.43 рд╕реЗ рдереВрдХ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдореИрдВрдиреЗ 0.43.x рд╕реЗ 0.47.x рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдХрд┐ рдЕрдХреНрд╖рдорддрд╛ рд╣рдореЗрд╢рд╛ рд╕реЗ рд░рд╣реА рд╣реИ, рдФрд░ рдЖрд░рдПрди рдиреЗ рдЕрднреА рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рдмрд╛рдж рд╕реЗ, рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдореЗрд░рд╛ рдРрдк рдореЗрд░реЗ рдлреЛрди рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреИрдЯрд░реА рдХреА рдЦрдкрдд рдХрд░ рд░рд╣рд╛ рд╣реИ! (рдФрд░ рдЕрдВрддрд░ рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╕реНрдкрд╖реНрдЯ рдЕрдкрд░рд╛рдзреА рдирд╣реАрдВ рд╣реИрдВ)

рдЕрд░реЗ @astreet , рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЕрдм рднреА рдпрд╛рдж рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╕рдордп рдФрд░ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдпрд╣рд╛рдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рдереЗ https://github.com/facebook/react-native/commit/3637bce479 ?

рдпрд╣ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдПрдХ рд▓реАрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ 2min рдЖрд╡рд░реНрддреА рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрджрд╛рдИ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдХреНрдпреЛрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред

рдЕрдм рдореИрдВ рдЗрд╕ рд╡рд╛рдХреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реВрдБ: "рдЯрд╛рдЗрдорд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдЬрд╛рдЧреГрдд рд░рд╣рддрд╛ рд╣реИ"ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдорд░ рдореЙрдбреНрдпреВрд▓ рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░ рдХреЙрд▓рдмреИрдХ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЙрд▓рдмреИрдХ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрд╛рдЗрдорд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ: https://github.com/facebook/react-native/blob/1e8f3b11027fe0a7514b4fc97d0798d3c64bc895/RctctAndroid/src/main/java/com/facebook/react/modules/core/Todules
рдХреЙрд▓рдорд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рд╣реИ рдЬрдм рдХреЛрдИ рдЯрд╛рдЗрдорд░ рд╢реЗрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЗ рдЬреБрдбрд╝рдиреЗ рдкрд░ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рд╣реИред рдХреЙрд▓рдмреИрдХ рдХреЗрд╡рд▓ рддрднреА рдирд┐рд▓рдВрдмрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдРрдк рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рд╡рд╛рдкрд╕ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд░рд┐рд╕реНрдЯреЛрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░ рдХреЙрд▓рдмреИрдХ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдЧрд░ рд╣рдо рдПрдХ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд╛рдЗрдорд░, рдЫреЛрдЯреА рдЕрд╡рдзрд┐ рдпрд╛ рд╕рднреА рд╕реЗрдЯ рдкрд░ рдХреЛрдИ рдЯрд╛рдЗрдорд░ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП enqueued рд╣реИред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд▓рдВрдмреЗ рдЯрд╛рдЗрдорд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ?

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд▓рдВрдмреЗ рдЯрд╛рдЗрдорд░ рдХреЛ "рд╢реБрджреНрдзрддрд╛ рдХрд╛ рдореБрджреНрджрд╛" рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдорд░ рдХреЗрд╡рд▓ рдЕрдЧреНрд░рднреВрдорд┐ рдРрдк рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ (рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдРрдк bg рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╣ рдпрд╛ рддреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдмрд╛рдж рдореЗрдВ рдХрд╛рдлреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ iOS рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ

рд╕реЙрдХреЗрдЯ рдореЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд┐рдВрдЧ рд▓реВрдк 85000ms, = pingInterval (25000ms) + pingTimeout (60000ms) рд╣реИред рдФрд░ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдореЗрдВ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ pingInterval рдФрд░ pingTimeout <= 60000ms рдХрд╛ рдпреЛрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

var socket = require('socket.io')(12345, {
  pingInterval: 20000, 
  pingTimeout: 40000
})

рдмрд╕ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ - рдореБрдЭреЗ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рд▓рдЧрднрдЧ 5 рдорд┐рдирдЯ рдХрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдореБрджреНрджрд╛ рдХрд┐рддрдирд╛ рдЧрдВрднреАрд░ рд╣реИ рдФрд░ рдпрд╣ рдореБрдЭреЗ рдХрд┐рддрдирд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛?

@ntomallen рдЕрдЧрд░ рдРрдк рд╣рд░ рд╕рдордп рдСрди-рд╕реНрдХреНрд░реАрди рд░рд╣реЗрдЧрд╛, рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рд╢рд╛рдпрдж рдпрд╣ 5 рдорд┐рдирдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╛ рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд░реЗрдВрдЧреЗред

рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдЪреЗрдВрдЬ рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рд╡рд┐рдХрд▓реНрдк pingTimeout 30000 рдкрд░ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рдХреЗ рд╕рд╛рде рд▓рд╛рд░реНрд╡рд╛ рдЗрдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

@ рд╕реЛрд╕реНрдлреЗрджрд░рд╛ рдЧреЛрддреНрд░ рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ!

рдХреНрдпрд╛ рд╣рдореЗрд╢рд╛ рд╣реИрдВрдбрд▓рд░.рдкреЛрд╕реНрдЯрдбреЗрд▓рдпреЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ?

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд▓реНрджреА рдареАрдХ? рдореИрдВрдиреЗ рдЕрднреА рдЖрд░рдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╛рдпрд░рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред

рдореИрдВрдиреЗ рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯрд╛рдЗрдорд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреГрд╖реНрдарднреВрдорд┐ (рд▓рдЧрд╛рддрд╛рд░) рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реМрднрд╛рдЧреНрдп рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред

рдореИрдВрдиреЗ рд╣рд░ 10 рдорд┐рдирдЯ рдореЗрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ setInterval рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ - рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рджреЗрдЦрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ setInterval(myFunction, 60000) рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЪрд┐рдВрддрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдореЗрд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдРрдк рдХреЗ рдЦреБрд▓реЗ рд░рд╣рдиреЗ рдкрд░, рдпрд╣ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрдк рдХреЗ рдирд┐рд▓рдВрдмрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж (рдПрдХрд▓ рд╣реЛрдо рдмрдЯрди рдкреНрд░реЗрд╕) рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬреЛ рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдХреНрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд▓рдВрдмрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдмреИрдЯрд░реА рдЬреАрд╡рди рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдЧрд╛?

рдпрд╣рд╛рдВ рдЪрд┐рдВрддрд╛ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдЧрд▓рдд рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╛рдЧреГрдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП "рдЯрд╛рдЗрдорд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓" рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдПрдХ рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░ рдХреЙрд▓рдмреИрдХ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП рд╣рд░ рдлреНрд░реЗрдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП рдорд┐рди рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА ~ 16ms рдХрд░рддрд╛ рд╣реИ)ред

рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдПрдХ рд╢реБрджреНрдзрддрд╛ рдореБрджреНрджрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдорд░ рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЖрдЧ рдирд╣реАрдВ рд▓рдЧреЗрдЧреАред рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Android рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдЯреАрдХ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдРрдк рдХреЗ рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдкрд░ рд╕рднреА рдЯрд╛рдЗрдорд░ рдХреЛ рдЕрдВрддрддрдГ рдлрд╛рдпрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рдпреЛрдЬрдирд╛? рдЬрдм рднреА рд╣рдо рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрди рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд▓реЙрдЧ рдЗрди рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛тАж

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рдереА рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ ~ 59 рдорд┐рдирдЯ рддрдХ рдерд╛ред рдХреЛрдб рдШрдВрдЯреЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдФрд░ рдерд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ setTimeout рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ setInterval рдШрдВрдЯреЗ рдХреЗ рдЕрдЧрд▓реЗ рд╢реАрд░реНрд╖ рдкрд░ред

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рдитАж

  1. setTimeout рдХреЛ рдорд┐рдирдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ setInterval рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
  2. рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдорд┐рдирдЯ 0 рдерд╛, рддреЛ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП setInterval рдирд╛рдордХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдм рд╣рд░ рдШрдВрдЯреЗ рдХреЗ рдмрдЬрд╛рдп рд╣рд░ рдорд┐рдирдЯ рдЪрд▓рддрд╛ рд╣реИ ... рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ 60 рдореЗрдВ рд╕реЗ 59 рдмрд╛рд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд▓рдЧрддрд╛ рд╣реИред

рд╣реЗ @beammith , рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ 60 рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдореЗрд░реА рд╕рдордЭ рдореЗрдВ, рдпрд╣ рдЕрднреА рднреА рдЯрд╛рдЗрдорд░рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рд╣реА рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рд░рдЦ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ :)

@newah - рд╣рд╛рдБ, рдпрд╣ рдереЛрдбрд╝рд╛

@beausmith , рдореИрдВрдиреЗ https://github.com/ocetnik/react-native-background-timer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рджреЗрд╢реА рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ - рдореИрдВрдиреЗ рдЗрд╕ рдкрд░рд┐рд╡рд╛рдж рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЯрд┐рдордЖрдЙрдЯ рдФрд░ рд╕реЗрдЯрдЗрдВрдЯрд░рд╡рд▓ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдЯрд╛рдЗрдорд░ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд▓рд╕ рдпрд╛ рдорд╛рдЗрдирд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ :))

рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ :)

рдЕрдЧрд░ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-intl FormattedRelative рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрджрд░ рдШрдЯрдХ FormattedRelative рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

scheduleNextUpdate(props, state) {
    // Cancel and pending update because we're scheduling a new update.
    clearTimeout(this._timer);

    const {value, units, updateInterval} = props;
    const time = new Date(value).getTime();

    // If the `updateInterval` is falsy, including `0` or we don't have a
    // valid date, then auto updates have been turned off, so we bail and
    // skip scheduling an update.
    if (!updateInterval || !isFinite(time)) {
      return;
    }

    const delta = time - state.now;
    const unitDelay = getUnitDelay(units || selectUnits(delta));
    const unitRemainder = Math.abs(delta % unitDelay);

    // We want the largest possible timer delay which will still display
    // accurate information while reducing unnecessary re-renders. The delay
    // should be until the next "interesting" moment, like a tick from
    // "1 minute ago" to "2 minutes ago" when the delta is 120,000ms.
    const delay =
      delta < 0
        ? Math.max(updateInterval, unitDelay - unitRemainder)
        : Math.max(updateInterval, unitRemainder);

    this._timer = setTimeout(() => {
      this.setState({now: this.context.intl.now()});
    }, delay);
  }

рдпрд╣рд╛рдБ рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

<FormattedRelative value={date}>
    {(message: string) => <Text>{message}</Text>}
</FormattedRelative>

рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?

рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред Android рдкрд░ рдлрд╛рдпрд░рдмреЗрд╕ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдХреГрдкрдпрд╛ рдареАрдХ рдХрд░реЗрдВред

рдпрд╣ рдлрд╛рдпрд░рдмреЗрд╕ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рдмрдЧ рд╣реИ рдФрд░ рдЬрдм рдЖрдк рддреАрд╕рд░реЗ рднрд╛рдЧ рдХреЗ рдРрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдЖрдк рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрдкреНрд╕ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдерд░реНрдбрдкрд╛рд░реНрдЯреА / рдлреИрдХреНрдЯрд░ рд▓реЙрдЧрд┐рди рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЯреЛрдХрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рд╣рдо рдЯреЛрдХрди рд╕рд╛рдл тАЛтАЛрдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдРрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреНрд▓реАрдирдЕрдк рдореИрдХреЗрдирд┐рдЬреНрдо рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╛ рдЖрдк рд▓реЛрдЧ рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@vongohren рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд░рдгрдиреАрддрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдкрд░ рдЖрдкрдХреЗ рдРрдк рдХреЗ рднреАрддрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рддрд╛рд░реАрдЦ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддреА рд╣реИ, рдлрд┐рд░ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рд▓реМрдЯрдиреЗ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рддрд╛рд░реАрдЦ рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдирд╛ рдХреНрд▓реАрдирдЕрдк рдХрд░реЗрдВ рдпрджрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдЕрд╡рдзрд┐ рдмреАрдд рдЧрдИ рд╣реИ ...

рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдХрд╣реЗрдВ рдХрд┐ рдЖрдк рд▓реЙрдЧрд┐рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдРрдк рдореЗрдВ рд╣рд╛рдВ рдХрд╣рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдХрд┐рд╕реА рдерд░реНрдб рдкрд╛рд░реНрдЯреА рдореЗрдВ рд▓реЙрдЧрдЗрди рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╣рд╛рдВ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЗрдХ рдлреЗрд╕рдмреБрдХ рдПрдк рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВред рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг uPort, https://www.uport.me/ рд╣реИред рдлрд┐рд░ рдЬрдм рд╣рдо рдЕрдкрдиреЗ рдРрдк рдХреЛ рд╕рдВрджреЗрд╢ рджреЗрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдм рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд┐ рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╣ рдлрд╝рд╛рдпрд░рдмреЗрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмрд╛рдж рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓реЗрддреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рдмрд╛рдд рдкрд░ рдЕрдЯрдХрд╛ рд╣реБрдЖ рдерд╛ рдХрд┐ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╕реВрдЪрдирд╛ рдХреЗ рдмрд╛рдж рд╕рдлрд╛рдИ рдареАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рд╕реВрдЪрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛ рдЧрдИ рдереА, рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджреЗрд╢реА рдореЗрдВ рдлрд╛рдпрд░рдмреЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рдЕрдкрдиреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ 30 рдорд┐рдирдЯ рдХрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдЪрд╛рд╣рд┐рдПред рд╣рд░ рдмрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕реЗ рд░реАрд╕реЗрдЯ рдХрд░реЗрдЧрд╛ (рдкреБрд░рд╛рдиреЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдирдпрд╛ рдмрдирд╛рдПрдВ)ред

рдпрд╣ рдХреИрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк? рдХреНрдпрд╛ рджреЗрд╢реА рдХреЛрдб рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдХреБрдЫ рдкрд╛рд╕ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ?

рд╡рд╛рд╣, рддреЛ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ

@nbennink рдпрд╣рд╛рдБ рдЙрддреНрддрд░ рдХреА рдЬрд╛рдБрдЪ

рд╕реЙрдХреЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рднреА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИред
рдЪреЗрддрд╛рд╡рдиреА рдиреАрдЪреЗ рд╣реИ:

Setting a timer for a long period of time, i.e. multiple minutes, is a performance and correctness issue on Android as it keeps the timer module awake, and timers can only be called when the app is in the foreground. See https://github.com/facebook/react-native/issues/12981 for more info.
(Saw setTimeout with duration 85000ms)

рдореЗрд░рд╛ рдкреИрдХреЗрдЬ рд╡рд┐рд╡рд░рдг рдиреАрдЪреЗ рд╣реИ:

  • "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "^ 16.3.0-рдЕрд▓реНрдлрд╛.1",
  • "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.54.4",
  • "рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ": "^ 2.1.1",
  • "рд╕реЙрдХреЗрдЯ.-рдХреНрд▓рд╛рдЗрдВрдЯ": "^ 2.1.1",

рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ?

рд╕реЙрдХреЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рднреА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИред
рдЪреЗрддрд╛рд╡рдиреА рдиреАрдЪреЗ рд╣реИ:

Setting a timer for a long period of time, i.e. multiple minutes, is a performance and correctness issue on Android as it keeps the timer module awake, and timers can only be called when the app is in the foreground. See https://github.com/facebook/react-native/issues/12981 for more info.
(Saw setTimeout with duration 85000ms)

рдореЗрд░рд╛ рдкреИрдХреЗрдЬ рд╡рд┐рд╡рд░рдг рдиреАрдЪреЗ рд╣реИ:

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "^ 16.3.0-рдЕрд▓реНрдлрд╛.1",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.54.4",
"рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ": "^ 2.1.1",
"рд╕реЙрдХреЗрдЯ.-рдХреНрд▓рд╛рдЗрдВрдЯ": "^ 2.1.1",

рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ?

Ditto, рдЗрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ?

рдЕрднреА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.57 рдкрд░ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рдореБрджреНрджрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЦреБрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдЕрднреА рднреА рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ !!!

рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреА 3-4 рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рджред

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ https://stackoverflow.com/a/48778011/7427111

рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд┐рд░реНрдл рд╕рдВрджреЗрд╢ рдЫрд┐рдкрд╛ рд░рд╣рд╛ рд╣реИ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

@dhavaljardosh рд╣рд╛рдВ, рдЖрдкрдХрд╛ рдЕрдиреБрдорд╛рди рд╕рд╣реА рд╣реИред

рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡ рд╕реА рдХреЗ рд╕рд╛рде рдПрдХ рджреЗрд╢реА рдЯрд╛рдЗрдорд░ рдмрдирд╛рдпрд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдВрджреЗрд╢ рдЫрд┐рдкрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдпрд╣ рдмреИрдЯрд░реА рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЦрд░рд╛рдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рдЯрд╛рдЗрдорд░ рд╣реИред

рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорддрджрд╛рди рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдХрд╛рд░рдг, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рдХреЗрд╡рд▓ _some_ рдЕрд░реНрдз-рд▓рдЧрд╛рддрд╛рд░ рд╕рдордп рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЕрдм рдореИрдВ рдЗрд╕реЗ рдРрдк рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдкрд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдмрдЪ рд░рд╣рд╛ рд╣реВрдВред YMMVред

рдкреБрд╢рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ ...

рдореИрдВ рд╣рд░ 60 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ?

рдЕрднреА рднреА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ред
рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди?

рдореИрдВ рдЙрд╕ рдореБрджреНрджреЗ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдЖрдИ рдереАред
рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди?

рдореИрдВ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЗ рдкреАрдЫреЗ рдХреЗ рдЕрд░реНрде рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдПрдХ рдлреАрдЪрд░ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ _only_ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╣реИ рдХрд┐ рдРрдк рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЯрд╛рдЗрдорд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдРрдк рд░рд╛рдЬреНрдп рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рдФрд░ рдРрдк рдХреЛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд░рдиреЗ рдкрд░ рдЯрд╛рдЗрдорд░ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛? рдпрд╛ _foreground_ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдореЗрдВ рднреА рдРрдк рдХреЗ рд╕рд╛рде рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рдЯрд╛рдЗрдорд░ рд╣реИ?

рдореИрдВ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЗ рдкреАрдЫреЗ рдХреЗ рдЕрд░реНрде рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдПрдХ рдлреАрдЪрд░ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ _only_ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╣реИ рдХрд┐ рдРрдк рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЯрд╛рдЗрдорд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдРрдк рд░рд╛рдЬреНрдп рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рдФрд░ рдРрдк рдХреЛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд░рдиреЗ рдкрд░ рдЯрд╛рдЗрдорд░ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛? рдпрд╛ _foreground_ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдореЗрдВ рднреА рдРрдк рдХреЗ рд╕рд╛рде рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рдЯрд╛рдЗрдорд░ рд╣реИ?

рдЗрд╕реЗ рднреА рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, setInterval рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдореИрдВ рдЗрд╕ рдПрдХ рд╕реЗ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ?

рдореИрдВ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЗ рдкреАрдЫреЗ рдХреЗ рдЕрд░реНрде рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдПрдХ рдлреАрдЪрд░ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ _only_ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╣реИ рдХрд┐ рдРрдк рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЯрд╛рдЗрдорд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдРрдк рд░рд╛рдЬреНрдп рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рдФрд░ рдРрдк рдХреЛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд░рдиреЗ рдкрд░ рдЯрд╛рдЗрдорд░ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛? рдпрд╛ _foreground_ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдореЗрдВ рднреА рдРрдк рдХреЗ рд╕рд╛рде рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рдЯрд╛рдЗрдорд░ рд╣реИ?

рдпреЗрд▓реЛ рдореИрд╕реЗрдЬ рдХрд╣рддрд╛ рд╣реИ "... рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЗрд╡рд▓ рддрднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдРрдк рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рд╣реЛред"
рдЯрд╛рдЗрдорд░ рдореЙрдбреНрдпреВрд▓ рдЬрд╛рдЧрддрд╛ рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЯрд╛рдЗрдорд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ? рддреЛ рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдРрдк рдХреЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдЯрд╛рдЗрдорд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬрд╛рдЧреГрдд рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди / рдмреИрдЯрд░реА рдкреНрд░рднрд╛рд╡ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ ...

@BerndWessels https://www.npmjs.com/package/react-native-firebase рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛ рд╣реИ? рдХрд╣рддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрд╢реА рдзрд╛рдЧреЗ рдкрд░ рдлрд╛рдпрд░рдмреЗрд╕ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЬрд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЕрдкрдирд╛ рдореМрдЬреВрджрд╛ рдХреЛрдб рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛? рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ ...

рдирд╡реАрдирддрдо RN0.59 рдкрд░ рдкреБрд╢рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛, рдФрд░ ui рдХреБрдЫ рд╕реЗрдХрдВрдб рдЕрдЯрдХ рд╕рдХрддрд╛ рд╣реИ ...

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЗрд╡рд▓ рддрднреА рдЪрд▓рддрд╛ рд╣реВрдВ рдЬрдм рдореИрдВ рдлрд╛рдпрд░рдмреЗрд╕ рдХреЗ рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред

await firebase.database().ref('users/' + id).set(data);

рдЖрд░рдПрди 0.57.1

рдореИрдВрдиреЗ 0.59 рдХреЗ рд╕рд╛рде рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХреА рд╣реИред

@swushi рдореБрдЭреЗ RN 0.59 рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ

рдореБрдЭреЗ рдлрд╛рдпрд░рдмреЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИ

Setting a timer for a long period of time, i.e. multiple minutes, is a performance and correctness issue on Android as it keeps the timer module awake, and timers can only be called when the app is in the foreground. See https://github.com/facebook/react-native/issues/12981 for more info. (Saw setTimeout with duration 111862ms)

рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдХреИрд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ ...

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЫреБрдкрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреИрд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ ??
рдореИрдВ firebase рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдлрд╛рдпрд░рдмреЗрд╕ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЙрддреНрдкрд╛рджрди рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдореБрдЭреЗ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реВрдБ рдЕрдЧрд░ рдХреЛрдИ рдХреГрдкрдпрд╛ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ ...

рдореИрдВ рдЗрд╕ рд╕рдордп (рдЗрд╕ рд╕рдордп) рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

https://github.com/firebase/firebase-js-sdk/issues/97#issuecomment -427512040 рджреЗрдЦреЗрдВ

fixtimerbug.js

/////////////////////////////////////////////////////////////////////////////
////// temporary fix to bug about 'Setting a timer' /////////////////////////
////// See: https://github.com/pusher/pusher-js/issues/248 //////////////////
////// See: https://github.com/facebook/react-native/issues/12981 ///////////
////// See: https://github.com/firebase/firebase-js-sdk/issues/97 ///////////
/////////////////////////////////////////////////////////////////////////////
import { Platform, InteractionManager } from 'react-native';
const _setTimeout = global.setTimeout;
const _clearTimeout = global.clearTimeout;
const MAX_TIMER_DURATION_MS = 60 * 1000;
if (Platform.OS === 'android') {
  const timerFix = {};
  const runTask = (id, fn, ttl, args) => {
    const waitingTime = ttl - Date.now();
    if (waitingTime <= 1) {
      InteractionManager.runAfterInteractions(() => {
        if (!timerFix[id]) {
          return;
        }
        delete timerFix[id];
        fn(...args);
      });
      return;
    }
    const afterTime = Math.min(waitingTime, MAX_TIMER_DURATION_MS);
    timerFix[id] = _setTimeout(() => runTask(id, fn, ttl, args), afterTime);
  };
  global.setTimeout = (fn, time, ...args) => {
    if (MAX_TIMER_DURATION_MS < time) {
      const ttl = Date.now() + time;
      const id = '_lt_' + Object.keys(timerFix).length;
      runTask(id, fn, ttl, args);
      return id;
    }
    return _setTimeout(fn, time, ...args);
  };
  global.clearTimeout = id => {
    if (typeof id === 'string' && id.startsWith('_lt_')) {
      _clearTimeout(timerFix[id]);
      delete timerFix[id];
      return;
    }
    _clearTimeout(id);
  };
}
/////////////////////////////////////////////////////////////////////////////

@cpmech
рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ .js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЯрд╛рдЗрдорд░ рдЕрдкрд╡рд╛рдж рдмрдирд╛рддрд╛ рд╣реИ

рдирдорд╕реНрддреЗ, рд╣рд╛рдБ рдКрдкрд░ рдХрд╛ рдХреЛрдб 'fixtimerbug.js' рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ App.js рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдБ рдЬреИрд╕реЗ:

import './src/fixtimerbug'; // <<<<<<<<<<<<<<<<<<

import React from 'react';
import { Platform, View, StatusBar } from 'react-native';
import AppNavigator from './src/navigation/AppNavigator';
import Store from './src/model/Store';

const store = new Store();

const App = () => (
  <View style={{ flex: 1, backgroundColor: '#fff' }}>
    {Platform.OS === 'ios' && <StatusBar barStyle="default" />}
    <AppNavigator screenProps={{ store }} />
  </View>
);

export default App;

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

рдереИрдВрдХ рдпреВ рдпреВ рдордЪ @cpmech

рд╣рд╛рдп, рдХреЛрдб (рдпрд╣рд╛рдБ рд╕реЗ: https://github.com/firebase/firebase-js-sdk/issues/97#issuecomment-427512040) рдмрд╕ setTimeout (рд╡реИрд╢реНрд╡рд┐рдХ) рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред рдПрдХ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS , рддреЛ рд╣рдо рдПрдХ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ id рдмрдЪрд╛рддреЗ рд╣реИрдВ ( timerFix ) рдФрд░ рдлрд┐рд░ runTask рдХреЙрд▓ рдХрд░реЗрдВ рдЬреЛ рдЕрд╡рдзрд┐ рдХреЛ рдЫреЛрдЯреЗ рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред runTask рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдореВрд▓ _setTimeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЫреЛрдЯреЗ рдЪрдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛ waitingTime рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрдиреЗ рддрдХ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред рдЬрдм waitingTime рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо React Native рдХреЗ runAfterInteractions рдХреЛ рдПрдХ рд╕рд╣рдЬ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА, рд╣рдо рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬреАрддреЗ рдереЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ _setTimeout рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рди рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ afterTime рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП _setTimeout рдореЗрдВ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдиреНрдпрдерд╛, рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS рд╕реЗ рдЫреЛрдЯреА рд╣реИ, рддреЛ рд╣рдо рд╕реАрдзреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ ( _setTimeout рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП) рдХрд╣рддреЗ рд╣реИрдВред

рд╡реИрд╢реНрд╡рд┐рдХ clearTimeout рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рд╣рдЯрд╛рдХрд░ рдПрдХ рд╕рдлрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА!

рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реБрдП .. рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдореЗрдВ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдБ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рддрд░реАрдХрд╛ рд╣реИ:
componentDidMount() { console.disableYellowBox = true; ... }

рдирдорд╕реНрддреЗ, рдХреЛрдб (рдпрд╣рд╛рдБ рд╕реЗ: firebase / firebase-js-sdk # 97 (рдЯрд┐рдкреНрдкрдгреА) ) рдХреЗрд╡рд▓ setTimeout (рд╡реИрд╢реНрд╡рд┐рдХ) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред

рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS , рддреЛ рд╣рдо рдПрдХ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ id рдмрдЪрд╛рддреЗ рд╣реИрдВ ( timerFix ) рдФрд░ рдлрд┐рд░ runTask рдХреЙрд▓ рдХрд░реЗрдВ рдЬреЛ рдЕрд╡рдзрд┐ рдХреЛ рдЫреЛрдЯреЗ рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред runTask рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдореВрд▓ _setTimeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЫреЛрдЯреЗ рдЪрдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛ waitingTime рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрдиреЗ рддрдХ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред рдЬрдм waitingTime рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо React Native рдХреЗ runAfterInteractions рдХреЛ рдПрдХ рд╕рд╣рдЬ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА, рд╣рдо рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬреАрддреЗ рдереЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ _setTimeout рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рди рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ afterTime рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП _setTimeout рдореЗрдВ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдиреНрдпрдерд╛, рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS рд╕реЗ рдЫреЛрдЯреА рд╣реИ, рддреЛ рд╣рдо рд╕реАрдзреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ ( _setTimeout рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП) рдХрд╣рддреЗ рд╣реИрдВред

рд╡реИрд╢реНрд╡рд┐рдХ clearTimeout рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рд╣рдЯрд╛рдХрд░ рдПрдХ рд╕рдлрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА!

рдЖрдкрдХреЛ рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдПрдХ рдЬрд╛рджреВ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдирдорд╕реНрддреЗ, рдХреЛрдб (рдпрд╣рд╛рдБ рд╕реЗ: firebase / firebase-js-sdk # 97 (рдЯрд┐рдкреНрдкрдгреА) ) рдХреЗрд╡рд▓ setTimeout (рд╡реИрд╢реНрд╡рд┐рдХ) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред

рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS , рддреЛ рд╣рдо рдПрдХ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ id рдмрдЪрд╛рддреЗ рд╣реИрдВ ( timerFix ) рдФрд░ рдлрд┐рд░ runTask рдХреЙрд▓ рдХрд░реЗрдВ рдЬреЛ рдЕрд╡рдзрд┐ рдХреЛ рдЫреЛрдЯреЗ рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред runTask рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдореВрд▓ _setTimeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЫреЛрдЯреЗ рдЪрдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛ waitingTime рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрдиреЗ рддрдХ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред рдЬрдм waitingTime рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо React Native рдХреЗ runAfterInteractions рдХреЛ рдПрдХ рд╕рд╣рдЬ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА, рд╣рдо рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬреАрддреЗ рдереЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ _setTimeout рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рди рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ afterTime рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП _setTimeout рдореЗрдВ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдиреНрдпрдерд╛, рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS рд╕реЗ рдЫреЛрдЯреА рд╣реИ, рддреЛ рд╣рдо рд╕реАрдзреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ ( _setTimeout рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП) рдХрд╣рддреЗ рд╣реИрдВред

рд╡реИрд╢реНрд╡рд┐рдХ clearTimeout рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рд╣рдЯрд╛рдХрд░ рдПрдХ рд╕рдлрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА!

рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ?

рдирдорд╕реНрддреЗ, рдХреЛрдб (рдпрд╣рд╛рдБ рд╕реЗ: firebase / firebase-js-sdk # 97 (рдЯрд┐рдкреНрдкрдгреА) ) рдХреЗрд╡рд▓ setTimeout (рд╡реИрд╢реНрд╡рд┐рдХ) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред

рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS , рддреЛ рд╣рдо рдПрдХ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ id рдмрдЪрд╛рддреЗ рд╣реИрдВ ( timerFix ) рдФрд░ рдлрд┐рд░ runTask рдХреЙрд▓ рдХрд░реЗрдВ рдЬреЛ рдЕрд╡рдзрд┐ рдХреЛ рдЫреЛрдЯреЗ рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред runTask рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдореВрд▓ _setTimeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЫреЛрдЯреЗ рдЪрдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛ waitingTime рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрдиреЗ рддрдХ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред рдЬрдм waitingTime рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо React Native рдХреЗ runAfterInteractions рдХреЛ рдПрдХ рд╕рд╣рдЬ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА, рд╣рдо рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬреАрддреЗ рдереЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ _setTimeout рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рди рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ afterTime рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП _setTimeout рдореЗрдВ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдиреНрдпрдерд╛, рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS рд╕реЗ рдЫреЛрдЯреА рд╣реИ, рддреЛ рд╣рдо рд╕реАрдзреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ ( _setTimeout рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП) рдХрд╣рддреЗ рд╣реИрдВред

рд╡реИрд╢реНрд╡рд┐рдХ clearTimeout рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рд╣рдЯрд╛рдХрд░ рдПрдХ рд╕рдлрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА!

рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рд╣реА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛?

рдирдорд╕реНрддреЗ, рдХреЛрдб (рдпрд╣рд╛рдБ рд╕реЗ: firebase / firebase-js-sdk # 97 (рдЯрд┐рдкреНрдкрдгреА) ) рдХреЗрд╡рд▓ setTimeout (рд╡реИрд╢реНрд╡рд┐рдХ) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред
рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS , рддреЛ рд╣рдо рдПрдХ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ id рдмрдЪрд╛рддреЗ рд╣реИрдВ ( timerFix ) рдФрд░ рдлрд┐рд░ runTask рдХреЙрд▓ рдХрд░реЗрдВ рдЬреЛ рдЕрд╡рдзрд┐ рдХреЛ рдЫреЛрдЯреЗ рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред runTask рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдореВрд▓ _setTimeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЫреЛрдЯреЗ рдЪрдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛ waitingTime рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрдиреЗ рддрдХ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред рдЬрдм waitingTime рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо React Native рдХреЗ runAfterInteractions рдХреЛ рдПрдХ рд╕рд╣рдЬ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА, рд╣рдо рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬреАрддреЗ рдереЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ _setTimeout рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рди рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ afterTime рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП _setTimeout рдореЗрдВ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдиреНрдпрдерд╛, рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS рд╕реЗ рдЫреЛрдЯреА рд╣реИ, рддреЛ рд╣рдо рд╕реАрдзреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ ( _setTimeout рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП) рдХрд╣рддреЗ рд╣реИрдВред
рд╡реИрд╢реНрд╡рд┐рдХ clearTimeout рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рд╣рдЯрд╛рдХрд░ рдПрдХ рд╕рдлрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА!

рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ?

рдирд╣реАрдВ рдпрд╣ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рд╣реИред

рдирдорд╕реНрддреЗ, рдХреЛрдб (рдпрд╣рд╛рдБ рд╕реЗ: firebase / firebase-js-sdk # 97 (рдЯрд┐рдкреНрдкрдгреА) ) рдХреЗрд╡рд▓ setTimeout (рд╡реИрд╢реНрд╡рд┐рдХ) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред
рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS , рддреЛ рд╣рдо рдПрдХ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ id рдмрдЪрд╛рддреЗ рд╣реИрдВ ( timerFix ) рдФрд░ рдлрд┐рд░ runTask рдХреЙрд▓ рдХрд░реЗрдВ рдЬреЛ рдЕрд╡рдзрд┐ рдХреЛ рдЫреЛрдЯреЗ рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред runTask рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдореВрд▓ _setTimeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЫреЛрдЯреЗ рдЪрдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛ waitingTime рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрдиреЗ рддрдХ рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред рдЬрдм waitingTime рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо React Native рдХреЗ runAfterInteractions рдХреЛ рдПрдХ рд╕рд╣рдЬ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА, рд╣рдо рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬреАрддреЗ рдереЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ _setTimeout рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рди рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ afterTime рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП _setTimeout рдореЗрдВ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдиреНрдпрдерд╛, рд╣рдорд╛рд░реЗ рд╕рдВрд╢реЛрдзрд┐рдд global.setTimeout рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрджрд┐ рдЕрд╡рдзрд┐ рд╕рдордп рд╕реАрдорд╛ MAX_TIMER_DURATION_MS рд╕реЗ рдЫреЛрдЯреА рд╣реИ, рддреЛ рд╣рдо рд╕реАрдзреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ ( _setTimeout рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП) рдХрд╣рддреЗ рд╣реИрдВред
рд╡реИрд╢реНрд╡рд┐рдХ clearTimeout рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ id рд╣рдЯрд╛рдХрд░ рдПрдХ рд╕рдлрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА!

рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рд╣реА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛?

рдирд╣реАрдВ, рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдзреНрдпрд╛рди рджреЗрдВ

рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдХрдВрд╕реЛрд▓ рдЬреЛрдбрд╝реЗрдВ редignoredYellowBox = ['рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдирд╛'];

рддрдерд╛

рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реБрдП .. рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдореЗрдВ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдБ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рддрд░реАрдХрд╛ рд╣реИ:
ComponentsDidMount () {рдХрдВрд╕реЛрд▓ .isableYellowBox = true; ...}

рдпрд╣ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЕрднреА рднреА рд╣реЛрддреА рд╣реИрдВ, рдЖрдкрдХреЛ рд╕рд┐рд░реНрдл рдПрдХ рд╕реВрдЪрдирд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред

рдкрд░рд┐рдгрд╛рдо? рддреНрд░реБрдЯрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЕрднреА рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд╛рдпрд░рдмреЗрд╕ рд╢реНрд░реЛрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред

рдмрд┐рдВрджреБ рдореЗрдВ рдорд╛рдорд▓рд╛: рдореЗрд░реА рдПрдХреНрд╕рдкреЛ рдЖрдзрд╛рд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рдЗрдорд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕реНрд░реЛрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЛрд░ рдореЗрдВ рдЕрд▓рд╛рд░реНрдордореИрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдпрд╣ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдпрд╛ рдХрд╕реНрдЯрдо рдореВрд▓ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@cpmech рд╕рдорд╛рдзрд╛рди рдЕрднреА рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдореИрдВрдиреЗ рдЗрд╕реЗ RN60.4 рдкрд░ рдЖрдЬрд╝рдорд╛рдпрд╛, рд▓реЗрдХрд┐рди рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЯрд╛рдЗрдорд░ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рдирд╛ рдЕрднреА рдмрд╛рдХреА рд╣реИред

рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рд╣рд▓ рдорд┐рд▓рд╛:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдврдиреА рд╣реЛрдЧреА: рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ / рдХреЛрд░ / рдЯрд╛рдЗрдорд░ / JSTimer; js
рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЕрд╡рдзрд┐ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрд╕ рдХреЙрдиреНрд╕реНрдЯреЗрдВрд╕ MAX_TIMER_DURATION_MS рдХреЛ рдмрджрд▓рдирд╛ рд╣реИ, рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ!

рдЯрд╛рдЗрдорд░ рдмрдврд╝рд╛рдПрдВ, рд▓реЗрдХрд┐рди рдХрд┐рддрдирд╛?

@dulmandakh рдХреЛрдИ рднреА рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ?

@dulmandakh рдХреЛрдИ рднреА рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ?

рд╢рд╛рдпрдж RNFirebase ? @dulmandakh

рдЬрдм рддрдХ рдпрд╣ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддрдм рддрдХ рдЖрдк рдЯрд╛рдЗрдорд░ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


const setLogoutTimer = expirationTime => {

  return dispatch => {
    timer = setTimeout(() => {
        if (expirationTime>60000)
        {
            console.log(`set new exp:${expirationTime-60000}`);
            dispatch(setLogoutTimer(expirationTime-60000));
        }
        else
        {
            console.log('logout');
            dispatch(logout());
        }
    }, 60000); 
  };
};

рдпрд╣ 2 рд╕рд╛рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдпрд╛ рдлрд╝рд╛рдпрд░рдмреЗрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рд╕реЗ рдареАрдХ рдХрд░реЗрдЧрд╛ред :(

рдареАрдХ рд╣реИ, рд▓рдВрдмреА рдЬрд╛рдВрдЪ рдХреЗ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдЬрдм рдпрд╣ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
рдЬреИрд╕реЗ рд╣реА рдореИрдВ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдХрд╣рддрд╛ рд╣реВрдВ, рдпрд╣ рдкреЙрдк рдЕрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ?
рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдХрд┐рд╕реА рднреА рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

@luismasg рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ setTimeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЦрд░рд╛рдм рдкреНрд░рдерд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕реНрд░реЛрдд рдкрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рджреВрд░рд╕реНрде рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЖрдпрд╛ рд╣реИ, рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдореИрдВ рдЬрд┐рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╕реЗрдЯ рд╣реИред рдЯреАрдЯреАрдПрд▓ рдХреЛ рдЬреАрд╡рд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп, рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЬреЗрдПрд╕ рдЯрд╛рдЗрдорд░ / рдЕрдВрддрд░рд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдЪреЗрддрд╛рд╡рдиреА рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЫреЛрдЯреА рдЯрд╛рдЗрдорд░ рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рдирдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреГрд╖реНрдарднреВрдорд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЕрдЧреНрд░рднреВрдорд┐ рд╕реЗрд╡рд╛рдУрдВ (Android) рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпреЛрдВ (iOS) рдХреЗ рд╕рд╛рде рдореВрд▓ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЬреЗрдПрд╕ рдЯрд╛рдЗрдорд░ / рдЕрдВрддрд░рд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдЪреЗрддрд╛рд╡рдиреА рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред "рд╕рд┐рд░реНрдл рдлрд╛рдпрд░рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ" рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдореБрджреНрджрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рд╕реЗ react-native рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдЕрдиреБрднрд╡ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдЬреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рд╣реИ ...

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ "рдлрд╛рдпрд░рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ" рдХрд╛ рдЬрд╡рд╛рдм рд╣реИ, рдЕрдзрд┐рдХ рдкрд╕рдВрдж рд╣реИ, "рд▓рдВрдмреЗ рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдпрд░рдмреЗрд╕ рдХреЛ рдареАрдХ рдХрд░реЗрдВ рдФрд░ рдбрдмреНрд▓реНрдпреВ / рдИ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рджреЗрд╢реА рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рд╡реЗ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ"ред

рд▓реЗрдХрд┐рди рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдЖрд░рдПрди рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рд▓рдВрдмреА рд╕рдордпрд╛рд╡рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рд╕рднреА рдЪреЗрддрд╛рд╡рдиреА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ (рдЬреИрд╕реЗ рдЙрдЪреНрдЪ рдмреИрдЯрд░реА рдХреА рдЦрдкрдд, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп, рдЖрджрд┐), рдпрд╣ рд╕рд┐рд░реНрдл рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреИрд░ рдкрд░ рдЦреБрдж рдХреЛ рдЧреЛрд▓реА рдорд╛рд░ рджреЗрдЧрд╛ред рдХреБрдЫ рднреА рд╣реЛ, рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЯрд╛рдЗрдорд░ / рдЕрдВрддрд░рд╛рд▓ рдЖрджрд┐рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреБрдЫ рднреА рд╣реЛ, рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЯрд╛рдЗрдорд░ / рдЕрдВрддрд░рд╛рд▓ рдЖрджрд┐рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрджрд┐рдо lack рдХреА рдХрдореА рд╣реИ

рдЯрд╛рдЗрдорд░ рдХреЗ рдЕрдВрджрд░ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╕рднреА thats!

@dulmandakh рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ? рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд░рд╣рддреА рд╣реИ рдФрд░ рдЪрд░реНрдЪрд╛ рдЬрд╛рд░реА рд╣реИ?

рдореИрдВрдиреЗ рдЗрд╕реЗ App.js рдореЗрдВ рдЬреЛрдбрд╝рд╛, рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ (рдЕрд╕реНрдерд╛рдпреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдлрд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реИ)

const _setTimeout = global.setTimeout;
const _clearTimeout = global.clearTimeout;
const MAX_TIMER_DURATION_MS = 60 * 1000;
if (Platform.OS === "android") {
  // Work around issue `Setting a timer for long time`
  // see: https://github.com/firebase/firebase-js-sdk/issues/97
  const timerFix = {};
  const runTask = (id, fn, ttl, args) => {
    const waitingTime = ttl - Date.now();
    if (waitingTime <= 1) {
      InteractionManager.runAfterInteractions(() => {
        if (!timerFix[id]) {
          return;
        }
        delete timerFix[id];
        fn(...args);
      });
      return;
    }

    const afterTime = Math.min(waitingTime, MAX_TIMER_DURATION_MS);
    timerFix[id] = _setTimeout(() => runTask(id, fn, ttl, args), afterTime);
  };

  global.setTimeout = (fn, time, ...args) => {
    if (MAX_TIMER_DURATION_MS < time) {
      const ttl = Date.now() + time;
      const id = "_lt_" + Object.keys(timerFix).length;
      runTask(id, fn, ttl, args);
      return id;
    }
    return _setTimeout(fn, time, ...args);
  };

  global.clearTimeout = id => {
    if (typeof id === "string" && id.startWith("_lt_")) {
      _clearTimeout(timerFix[id]);
      delete timerFix[id];
      return;
    }
    _clearTimeout(id);
  };
}

рдпрд╣ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ, рди рдХрд┐ рдлрд┐рдХреНрд╕ред

рдореИрдВрдиреЗ рдЗрд╕реЗ App.js рдореЗрдВ рдЬреЛрдбрд╝рд╛, рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ (рдЕрд╕реНрдерд╛рдпреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдлрд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реИ)

...
    if (typeof id === "string" && id.startWith("_lt_")) {
...

рдпрджрд┐ рдЖрдк рдЙрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ 'startWith' 'startWith' рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдЗрд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрдореНрдкреНрд▓реАрдлрд╛рдИ рдбрд╛рдЯрд╕реНрдЯреЛрд░ рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рдЙрдЪрд┐рдд рдлрд┐рдХреНрд╕ рдХреЗ рдмрджрд▓реЗ рдореЗрдВ, рдореИрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['Setting a timer']);

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореБрджреНрджрд╛ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ RN рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, Amplify рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдкреИрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдореБрдЭреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк console.ignoredYellowBox = ['Setting a timer']; рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ

рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╣рд╛рдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдореИрдВрдиреЗ рд╕реНрдХреНрд░реАрди рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХреНрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХреА, рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдмрд╕ рдЗрд╕реЗ рдЕрдкрдиреЗ App.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд╣реАрдВ рд░рдЦреЗрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ред
рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рдкрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛!

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА Firebase рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рджреГрдврд╝рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рд╕рд╛рдЗрди рдЗрди / рд╕рд╛рдЗрдирдЕрдк)

* рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рд╕реНрд╡рддрдГ рд╕рд╛рдЗрди рдЗрди рд╣реЛ рдЬрд╛рдПрдЧрд╛

https://firebase.google.com/docs/auth/web/auth-state-persistence

рдЗрд╕рд▓рд┐рдП ... рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рдж, рдПрдХ рд╕рдордп рдЪрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдлрд╛рдпрд░рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХ local ред "Firebase.auth.Auth.Persistence.LOCAL"

рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
firebase.auth.Auth.Persistence.SESSION
firebase.auth.Auth.Persistence.NONE

рдпрд╛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ...

рдЬрдм рддрдХ рд╡реЗ рдЗрд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддреЗ ...

"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓" рд╕реЗ {рдпрд▓реЛрдмреЙрдХреНрд╕} рдЖрдпрд╛рдд рдХрд░реЗрдВ;
"_рдЖрд╢" рд╕реЗ рдЖрдпрд╛рдд _;
YellowBox.ignoreWarnings (["рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдирд╛"]);
const _console = _.clone (рдХрдВрд╕реЛрд▓);
рд╕рд╛рдВрддреНрд╡рдирд╛.рджреНрд╡рд╛рд░рд╛ = (рд╕рдВрджреЗрд╢) => {
рдЕрдЧрд░ (message.indexOf ("рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдирд╛") <= -1) {
_console.warn (рд╕рдВрджреЗрд╢);
}
};

рдПрдХ рдмрд╛рд░ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрдВрдХ рдХреЛрдб рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реЙрдЗрд▓рд╛!

рдЗрд╕реЗ RxJS рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореВрд▓рддрдГ рдЖрдкрдХреЗ 5200 рдЯрд╛рдЗрдорд░ рдХреЛ 5 * 1000 + 200 рдЯрд╛рдЗрдорд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред

import { of, range } from 'rxjs';
import {
  concatMap,
  delay,
  filter,
  mapTo,
  switchMap,
  tap,
} from 'rxjs/operators';

// ~ setTimeout(..., 5200);

const source = of(5200).pipe(
  switchMap(duration => {
    const times = Math.floor(duration / 1000); // = 5
    const remainder = duration % 1000; // = 200

    return range(1, times).pipe(
      concatMap(i => of(i).pipe(delay(1000))),
      tap(console.log),
      filter(i => i === times),
      delay(remainder),
      tap(console.log),
      mapTo('Done !'),
    );
  }),
);

source.subscribe(console.log);

1 // After 1s
2 // After 2s
3 // After 3s
4 // After 4s
5 // After 5s
5 // After 5s + 200 ms
'Done !'

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА Firebase рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рджреГрдврд╝рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рд╕рд╛рдЗрди рдЗрди / рд╕рд╛рдЗрдирдЕрдк)

* рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рд╕реНрд╡рддрдГ рд╕рд╛рдЗрди рдЗрди рд╣реЛ рдЬрд╛рдПрдЧрд╛

https://firebase.google.com/docs/auth/web/auth-state-persistence

рдЗрд╕рд▓рд┐рдП ... рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рдж, рдПрдХ рд╕рдордп рдЪрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдлрд╛рдпрд░рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХ local ред "Firebase.auth.Auth.Persistence.LOCAL"

рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
firebase.auth.Auth.Persistence.SESSION
firebase.auth.Auth.Persistence.NONE

рдпрд╛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ...

рдорд╣рд╛рди! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА Firebase рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рджреГрдврд╝рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рд╕рд╛рдЗрди рдЗрди / рд╕рд╛рдЗрдирдЕрдк)
* рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рд╕реНрд╡рддрдГ рд╕рд╛рдЗрди рдЗрди рд╣реЛ рдЬрд╛рдПрдЧрд╛
https://firebase.google.com/docs/auth/web/auth-state-persistence
рдЗрд╕рд▓рд┐рдП ... рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рдж, рдПрдХ рд╕рдордп рдЪрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдлрд╛рдпрд░рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХ local ред "Firebase.auth.Auth.Persistence.LOCAL"
рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
firebase.auth.Auth.Persistence.SESSION
firebase.auth.Auth.Persistence.NONE
рдпрд╛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ...

рдорд╣рд╛рди! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ?

рдпрджрд┐ рдЖрдк рдкреБрд░рд╛рдиреЗ рдлрд╛рдпрд░рдмреЗрд╕ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдПрд╕рдбреАрдХреЗ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

https://firebase.google.com/docs/reference/admin

рдлрд┐рд░ рднреА рдХреЛрдИ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдЖрдк рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ # рд╢рд░реНрдо рдХрд░реЛ; рдкреА

рдлрд┐рд░ рднреА рдХреЛрдИ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдЖрдк рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ # рд╢рд░реНрдо рдХрд░реЛ; рдкреА

рдХрднреА рднреА рдУрдкрди рд╕реЛрд░реНрд╕ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╢рд░реНрдорд┐рдВрджрд╛ рди рдХрд░реЗрдВред рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рдЦреБрд▓рд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдкреБрд▓-рдЕрдиреБрд░реЛрдз рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗред

рдХрд╣рд╛ рдХрд┐ рдкреГрдереНрд╡реА рдкрд░ рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ ред

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрддреНрддрд┐рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдЖрдкрддреНрддрд┐рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрддреА рд╣реИред

рддреЛ рдХреЛрдИ рднреА рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред

рд╡реЗ рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ _little bit_ рдХреЛ рд╢рд░реНрдорд┐рдВрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░рд▓ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП "рд╣рд▓" рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдВрдмреА рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдпрджрд┐ рдЖрдк рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкреГрд╖реНрдарднреВрдорд┐ / рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдЯрд╛рдЗрдорд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдкреГрд╖реНрдарднреВрдорд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реИред

@Eightyfive рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдордиреЗ rxjs6 delay , timeout & interval рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЗрдВ рдПрдХ рдЧрд┐рд░рд╛рд╡рдЯ рджрд░реНрдЬ рдХреАред

рдЕрднреА рднреА рдПрдХ рд╕рд╡рд╛рд▓ рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ "рдЯрд╛рдЗрдорд░ рдореЙрдбреНрдпреВрд▓" рдЫреЛрдЯреЗ рдЕрдВрддрд░рд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмрдВрдж рд░рд╣рддрд╛ рд╣реИ? рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд┐рд░реНрдл рдЯрд╛рдЗрдорд░ рдХреЗ рд░реБрдХрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдЬрдм рдРрдк рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЫрд┐рдкрд╛рддрд╛ рд╣реИ?

import { switchMap, concatMap, delay as nativeDelay, mapTo, filter, switchMapTo, repeat } from 'rxjs/operators'
import { range, of, race, throwError, TimeoutError } from 'rxjs'

const TIMER_INTERVAL = 1000
const reactNativeTimer = (duration) => {
  const times = Math.floor(duration / TIMER_INTERVAL)
  const remainder = duration % TIMER_INTERVAL
  if (times < 1) {
    return of(true).pipe(nativeDelay(remainder))
  }
  return range(1, times).pipe(
    concatMap(i => of(i).pipe(nativeDelay(TIMER_INTERVAL))),
    filter(i => i === times),
    nativeDelay(remainder)
  )
}

/**
 * React Native compatible version of delay pipe
 * <strong i="11">@param</strong> {number} duration in ms
 */
export const delay = (duration) => {
  return (source) => {
    return source.pipe(
      switchMap(next =>
        reactNativeTimer(duration).pipe(mapTo(next))
      )
    )
  }
}

/**
 * React Native compatible version of timeout pipe
 * <strong i="12">@param</strong> {number} duration in ms
 */
export const timeout = (duration) => {
  return (source) => {
    const timeoutTimer = reactNativeTimer(duration).pipe(
      switchMapTo(throwError(new TimeoutError()))
    )
    return race(source, timeoutTimer)
  }
}

/**
 * React Native compatible version of interval
 * <strong i="13">@param</strong> {number} duration in ms
 */
export const interval = (duration) => {
  return reactNativeTimer(duration).pipe(
    repeat()
  )
}

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордЬреЗрджрд╛рд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рд╣рд░ рдХреЛрдИ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЬрдм рдореБрдЭреЗ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЗрд╕ "рдореБрджреНрджреЗ" рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдореБрдЭреЗ "рдХреИрд╕реЗ?" рд╕рдордЭрд╛рддреЗ рд╣реБрдП, рдЙрдЪрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдорд┐рд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рдереАред рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдФрд░ "рдХреНрдпреЛрдВ?" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рддрд░реНрдХ рджреЗрдирд╛ред

рдлреНрд░рдВрдЯ-рдПрдВрдб #millennials

рдпрд╣ #millenial рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐:

  • рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрд╡ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╣реИ: рдЖрдкрдиреЗ рдПрдХ рд▓рдВрдмрд╛ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИред
  • рдпрд╣ рдзрд╛рдЧрд╛ рдРрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ рдлрд╛рдпрд░рдмреЗрд╕)
  • рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ (рдЙрддреНрдкрд╛рджрдХ) рдЪрд░реНрдЪрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ, рдпрд╣ react-native рднреАрддрд░ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ known-issue рдФрд░ Help Wanted рдЪрд┐рд╣реНрдирд┐рдд рд╣реИред

рд╕рд╣рд╕реНрд░рд╛рдмреНрджрд┐рдпреЛрдВ рд╕реЗ рдорд┐рд▓реЗрдирд┐рдпрд▓ рдЙрддреНрддрд░ :)

рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрд╡ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╣реИ: рдЖрдкрдиреЗ рдПрдХ рд▓рдВрдмрд╛ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИред

  • рдЗрд╕рдХреА рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ, рдЗрд╕рдХреА рдЪреЗрддрд╛рд╡рдиреА (рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭрд╕реЗ рди рдкреВрдЫреЗрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рдЧрд╣рд░реА рджрд╛рд░реНрд╢рдирд┐рдХ рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░рдиреА рд╣реЛрдЧреА :)
  • рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдХрд╛рд░рдг рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдореБрдЭреЗ рдХрд╛рд░реНрдпрдХрд╛рд░реА рд╕рд╛рд░рд╛рдВрд╢ рдХреЗ рдмрдЬрд╛рдп рдЯрди рдЯрд┐рдкреНрдкрдгреА рдкрдврд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реБрдЭрд╛рдП рдЧрдП рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рд╣реА рджреЗрдЦреЗрдВ):
    image
  • рдореИрдВ рдЗрд╕реЗ 'рдЖрддреНрдо рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ' рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ред рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрджрд░реНрдн рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдХрд░рд╛рдпрд╛ рдЧрдпрд╛ред рд╡рд╕реНрддреБрддрдГ, рдПрдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рджреЛ рд╡рд╛рдХреНрдп рд╣реИрдВред

рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдЬреНрдЮрд╛рдд рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рд╣реЗрд▓реНрдк рд╡рд╛рдВрдЯреЗрдб рд╣реИред

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдорддред рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдореЗрдВ URL рд╕рдВрджрд░реНрдн рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХрд╛ рд╕рдордп рдмрдЪрд╛рдПрдЧрд╛ред

рдлрд╛рдпрд░рдмреЗрд╕ / рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП: рдореИрдВ рдмрд╕ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ REST рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрдпрд╛ред рдЪреВрдБрдХрд┐ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдСрдЙрдЯрдлрд┐рдЯ рдФрд░ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдХреА рдЬрд░реВрд░рдд рдереА, рдЬрд┐рд╕рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╣рд▓ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реЛ рдЧрдпрд╛ред рдпрд╣рд╛рдБ рд╕реНрдирд┐рдкреЗрдЯ:

https://stackoverflow.com/a/62446792

рдореИрдВрдиреЗ рдЗрд╕реЗ рдРрдк рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ () рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

рдЖрдпрд╛рдд 'рдпреЗрд▓реЛрдмреЙрдХреНрд╕' 'рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓' рд╕реЗ;
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдРрдк () {
YellowBox.ignoreWarnings (['рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдирд╛']);
...
...
..
}

рдпрд╛рдж рд░рдЦреЗрдВ

рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдпрд╛ рдирд╣реАрдВ

рдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛

node_modulesreact рджреЗрд╢реА \ рдкреБрд╕реНрддрдХрд╛рд▓рдп \ рдХреЛрд░ \ TimersJSTimers.js

рд╡рд╣рд╛рдБ рдПрдХ рдХрд╛рд░реНрдп const MAX_TIMER_DURATION_MS = 60 * 1000 рдФрд░ рдореИрдВрдиреЗ рд╕рдордп рдмрдврд╝рд╛рдХрд░ 60 * 100000 рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рд╡рдЯреА рд╣реИ

рд╕реБрдиреЛ,
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд▓рдЧрднрдЧ 3 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреА рд╣реИ рдФрд░ рд╣рдо рдЕрднреА рднреА рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣реЗ рд╣реИрдВ;)
рдЬреИрд╕рд╛ рдХрд┐ @RWOverdijk рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреА рдЕрдирджреЗрдЦреА рдХрд░рдирд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
рд╡рд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХрд┐ рдореИрдВ рдпрд╛рдж рдХрд┐рдпрд╛?

рдзрдиреНрдпрд╡рд╛рдж <3

рдЕрд░реЗ рд╕рдм, рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рдХреЗ рд▓рд┐рдП рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдФрд░ рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдпрд╣ рдирд┐рд░реНрдгрдп рдХреНрдпреЛрдВ рд▓реЗ рд░рд╣реЗ рд╣реИрдВред

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЯрд╛рдЗрдорд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ setTimeout рдЬреИрд╕реЗ JS рдЯрд╛рдЗрдорд░ рдХрд╛ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдЯрд╛рдЗрдорд░ рдХреЛ рджреЗрд╢реА рддрд░рдл рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрди рдЯрд╛рдЗрдорд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рдкрдХреНрд╖ рддрдп рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрд╢рд┐рдпрд╛рд░ рд╣реИ рдЬрдм рдЯрд╛рдЗрдорд░ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╡реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреАрд╡рди рдЪрдХреНрд░ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рдпрджрд┐ рдореИрдВ рдПрдХ рд▓рдВрдмреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░реВрдБ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдпрд╣рд╛рдБ рдореЗрд░реА рд╕рдордЭ рд╣реИ, рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ:

  1. рдпрджрд┐ рдЖрдк рдПрдХ рд▓рдВрдмрд╛ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдРрдк рдХреЛ рдЯрд╛рдЗрдорд░ рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЦреБрд▓рд╛ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЯрд╛рдЗрдорд░ рдХреЛ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  2. рдпрджрд┐ рдЖрдк рдПрдХ рд▓рдВрдмрд╛ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЯрд╛рдЗрдорд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлреЛрди рдХреЛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрдм рддрдХ рдЖрдк рдРрдк рдХреЛ рдирд╣реАрдВ рдЦреЛрд▓рддреЗ рддрдм рддрдХ рдЯрд╛рдЗрдорд░ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
  3. рд╣реЗрдбрд▓реЗрд╕ рдЬреЗрдПрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ, рдЬреЛ рдРрдк рдореЗрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рднреА рдЯрд╛рдЗрдорд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рдореЗрдВ рд▓рдВрдмреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмреБрд▓рд╛рдиреЗ рдЪрд╛рд╣рд┐рдП?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╢реБрджреНрдзрддрд╛ рдореБрджреНрджрд╛ рд╣реИ, рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рд╣реИред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреЗ рдРрдк рдХреЛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЕрдЧрд░ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЬрдм рдРрдк рдлрд┐рд░ рд╕реЗ рдЧреНрд░рд╛рдЙрдВрдбреЗрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХрд╛ рдЯрд╛рдЗрдорд░ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗрд▓реЛрдмреЙрдХреНрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдкрдХрд╛ рдЯрд╛рдЗрдорд░ рдПрдХ рд╕рддреНрд░ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдЯрд╛рдЗрдорд░ рдХреЛ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рд╕реЙрдХреЗрдЯ.рдЖрдИ.рдУ рдФрд░ рдлрд╛рдпрд░рдмреЗрд╕ рдЬреИрд╕реА рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реВрдВ рдЬреЛ рд▓рдВрдмреА рдЯрд╛рдЗрдорд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рддреА рд╣реИрдВ?

рдореБрдЭреЗ рдЗрди рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдкрддрд╛ рд╣реИред рдпрд╣ рдЕрдВрддрддрдГ рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреНрд░рд╢реНрди рдкрд░ рдЖрддрд╛ рд╣реИред рдпрджрд┐ рдЗрди рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рд╣рд▓ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рдордп рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдореБрджреНрджреЗ рд╣реЛрдВрдЧреЗ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Firebase рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред рдЕрдВрддрддрдГ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдХреЗ рдмреЗрд╣рддрд░ рд╕реЗрд╡рд╛ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рд╣реИред

рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рд╣рд▓ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рдордп рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ setTimeout AlarmManager рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛?

AlarmManager рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рдРрдк рдХреЛ рдЬрдЧрд╛ рджреЗрдЧрд╛, рдФрд░ рд╣рдореЗрдВ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ setTimeout рдЬреИрд╕реЗ рдЯрд╛рдЗрдорд░ рдХреЛ рдРрдк рдХреЛ рдЬрдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓рдВрдмреА рд╕рдордпрд╛рд╡рдзрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рд╡реЗ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ рдЬрдмрдХрд┐ рдРрдк рдЦреБрд▓рд╛ рд╣реИред рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдПрдХ рдРрдк рдХреЛ рдЬрдЧрд╛рдирд╛ рдорд╣рдВрдЧрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдЗрд░рд╛рджрд╛ рд╣реЛред

рдЗрд╕реА рд╕рдордп, рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рд╢рд╛рдпрдж рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ setTimeout рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрднреА рд▓реАрди рдХреЛрд░ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдХрд╛рд░рдг рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╕рддрд╣ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ react-native-background-timer рдЬреИрд╕реА рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рд╣реИред

рдЖрдк рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣рдЯрд╛рддреЗ?

рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ setTimeout рдХреА рд╢реБрджреНрдзрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдЗрд╕ рд╢реБрджреНрдзрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рд╣рдо рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдЙрдирдХреЗ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

grabbou picture grabbou  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

TrakBit picture TrakBit  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jlongster picture jlongster  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

WG-Com picture WG-Com  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

despairblue picture despairblue  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ