рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдпрд╣ рдЯрд╛рдЗрдорд░ рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрдВ рдЬрд╛рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЯрд╛рдЗрдорд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬрд╛рдЧреГрдд рд░рдЦрддрд╛ рд╣реИред
рд╣рдореЗрдВ рдПрдХ рдХрдЯ рдСрдл рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕ рдкрд░ рд╣рдо framecallbacks рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрдорд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрд▓рд╛рд░реНрдордореИрди рдФрд░ рд╣реИрдВрдбрд▓рд░.рдкреЛрд╕реНрдЯрдбреЗрд▓рдпреЗрдб рдХреЛ рд╕реМрдВрдкрддреЗ рд╣реИрдВред
рдорд╣рд╛рди рд╕реБрдзрд╛рд░!
рдпрд╣ 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
рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╕рдВрджреЗрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕реНрдХреНрд░реАрди рд╢реЙрдЯ рд╣реИред (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП) рдпрд╛ рд╢рд╛рдпрдж рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдкрдХреЗ рдорджрдж рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж
рдЕрд░реЗ, рдЪреЗрддрд╛рд╡рдиреА рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдШрдЯрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдФрд░ рд╣рд╛рдБ, рд▓рд╛рдЗрди рдХрд╛рд╕реНрдЯ 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
рдШрдВрдЯреЗ рдХреЗ рдЕрдЧрд▓реЗ рд╢реАрд░реНрд╖ рдкрд░ред
setTimeout
рдХреЛ рдорд┐рдирдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ setInterval
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред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)
рдореЗрд░рд╛ рдкреИрдХреЗрдЬ рд╡рд┐рд╡рд░рдг рдиреАрдЪреЗ рд╣реИ:
рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ?
рд╕реЙрдХреЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рднреА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИред
рдЪреЗрддрд╛рд╡рдиреА рдиреАрдЪреЗ рд╣реИ:
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
рдпрд╛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ...рдорд╣рд╛рди! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ?
рдпрджрд┐ рдЖрдк рдкреБрд░рд╛рдиреЗ рдлрд╛рдпрд░рдмреЗрд╕ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдПрд╕рдбреАрдХреЗ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдлрд┐рд░ рднреА рдХреЛрдИ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдЖрдк рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ # рд╢рд░реНрдо рдХрд░реЛ; рдкреА
рдлрд┐рд░ рднреА рдХреЛрдИ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдЖрдк рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ # рд╢рд░реНрдо рдХрд░реЛ; рдкреА
рдХрднреА рднреА рдУрдкрди рд╕реЛрд░реНрд╕ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╢рд░реНрдорд┐рдВрджрд╛ рди рдХрд░реЗрдВред рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рдЦреБрд▓рд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдкреБрд▓-рдЕрдиреБрд░реЛрдз рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗред
рдХрд╣рд╛ рдХрд┐ рдкреГрдереНрд╡реА рдкрд░ рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ ред
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрддреНрддрд┐рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдЖрдкрддреНрддрд┐рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрддреА рд╣реИред
рддреЛ рдХреЛрдИ рднреА рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред
рд╡реЗ рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ _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()
)
}
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордЬреЗрджрд╛рд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рд╣рд░ рдХреЛрдИ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЬрдм рдореБрдЭреЗ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЗрд╕ "рдореБрджреНрджреЗ" рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдореБрдЭреЗ "рдХреИрд╕реЗ?" рд╕рдордЭрд╛рддреЗ рд╣реБрдП, рдЙрдЪрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдорд┐рд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рдереАред рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдФрд░ "рдХреНрдпреЛрдВ?" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рддрд░реНрдХ рджреЗрдирд╛ред
рдпрд╣ #millenial рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐:
react-native
рднреАрддрд░ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛ рд╣реИрдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ known-issue
рдФрд░ Help Wanted
рдЪрд┐рд╣реНрдирд┐рдд рд╣реИред
рд╕рд╣рд╕реНрд░рд╛рдмреНрджрд┐рдпреЛрдВ рд╕реЗ рдорд┐рд▓реЗрдирд┐рдпрд▓ рдЙрддреНрддрд░ :)
рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрд╡ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╣реИ: рдЖрдкрдиреЗ рдПрдХ рд▓рдВрдмрд╛ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдЬреНрдЮрд╛рдд рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рд╣реЗрд▓реНрдк рд╡рд╛рдВрдЯреЗрдб рд╣реИред
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдорддред рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдореЗрдВ URL рд╕рдВрджрд░реНрдн рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХрд╛ рд╕рдордп рдмрдЪрд╛рдПрдЧрд╛ред
рдлрд╛рдпрд░рдмреЗрд╕ / рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП: рдореИрдВ рдмрд╕ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ REST рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрдпрд╛ред рдЪреВрдБрдХрд┐ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдСрдЙрдЯрдлрд┐рдЯ рдФрд░ рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдХреА рдЬрд░реВрд░рдд рдереА, рдЬрд┐рд╕рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╣рд▓ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реЛ рдЧрдпрд╛ред рдпрд╣рд╛рдБ рд╕реНрдирд┐рдкреЗрдЯ:
рдореИрдВрдиреЗ рдЗрд╕реЗ рдРрдк рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ () рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
рдЖрдпрд╛рдд 'рдпреЗрд▓реЛрдмреЙрдХреНрд╕' 'рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓' рд╕реЗ;
рдирд┐рд░реНрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдРрдк () {
YellowBox.ignoreWarnings (['рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдирд╛']);
...
...
..
}
рдпрд╛рдж рд░рдЦреЗрдВ
рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдпрд╛ рдирд╣реАрдВ
рдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
node_modulesreact рджреЗрд╢реА \ рдкреБрд╕реНрддрдХрд╛рд▓рдп \ рдХреЛрд░ \ TimersJSTimers.js
рд╡рд╣рд╛рдБ рдПрдХ рдХрд╛рд░реНрдп const MAX_TIMER_DURATION_MS = 60 * 1000
рдФрд░ рдореИрдВрдиреЗ рд╕рдордп рдмрдврд╝рд╛рдХрд░ 60 * 100000 рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рд╡рдЯреА рд╣реИ
рд╕реБрдиреЛ,
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд▓рдЧрднрдЧ 3 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреА рд╣реИ рдФрд░ рд╣рдо рдЕрднреА рднреА рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣реЗ рд╣реИрдВ;)
рдЬреИрд╕рд╛ рдХрд┐ @RWOverdijk рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреА рдЕрдирджреЗрдЦреА рдХрд░рдирд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
рд╡рд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХрд┐ рдореИрдВ рдпрд╛рдж рдХрд┐рдпрд╛?
рдзрдиреНрдпрд╡рд╛рдж <3
рдЕрд░реЗ рд╕рдм, рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рдХреЗ рд▓рд┐рдП рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдФрд░ рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдпрд╣ рдирд┐рд░реНрдгрдп рдХреНрдпреЛрдВ рд▓реЗ рд░рд╣реЗ рд╣реИрдВред
рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ setTimeout
рдЬреИрд╕реЗ JS рдЯрд╛рдЗрдорд░ рдХрд╛ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдЯрд╛рдЗрдорд░ рдХреЛ рджреЗрд╢реА рддрд░рдл рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрди рдЯрд╛рдЗрдорд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рдкрдХреНрд╖ рддрдп рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрд╢рд┐рдпрд╛рд░ рд╣реИ рдЬрдм рдЯрд╛рдЗрдорд░ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╡реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреАрд╡рди рдЪрдХреНрд░ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред
рдпрд╣рд╛рдБ рдореЗрд░реА рд╕рдордЭ рд╣реИ, рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╢реБрджреНрдзрддрд╛ рдореБрджреНрджрд╛ рд╣реИ, рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рд╣реИред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреЗ рдРрдк рдХреЛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЕрдЧрд░ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЬрдм рдРрдк рдлрд┐рд░ рд╕реЗ рдЧреНрд░рд╛рдЙрдВрдбреЗрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХрд╛ рдЯрд╛рдЗрдорд░ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗрд▓реЛрдмреЙрдХреНрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред
рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдкрдХрд╛ рдЯрд╛рдЗрдорд░ рдПрдХ рд╕рддреНрд░ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдЯрд╛рдЗрдорд░ рдХреЛ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореБрдЭреЗ рдЗрди рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдкрддрд╛ рд╣реИред рдпрд╣ рдЕрдВрддрддрдГ рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреНрд░рд╢реНрди рдкрд░ рдЖрддрд╛ рд╣реИред рдпрджрд┐ рдЗрди рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рд╣рд▓ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рдордп рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдореБрджреНрджреЗ рд╣реЛрдВрдЧреЗ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Firebase рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред рдЕрдВрддрддрдГ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдХреЗ рдмреЗрд╣рддрд░ рд╕реЗрд╡рд╛ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рд╣реИред
рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рд╣рд▓ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рдордп рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
setTimeout
AlarmManager
рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛?AlarmManager
рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рдРрдк рдХреЛ рдЬрдЧрд╛ рджреЗрдЧрд╛, рдФрд░ рд╣рдореЗрдВ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ setTimeout
рдЬреИрд╕реЗ рдЯрд╛рдЗрдорд░ рдХреЛ рдРрдк рдХреЛ рдЬрдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓рдВрдмреА рд╕рдордпрд╛рд╡рдзрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рд╡реЗ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ рдЬрдмрдХрд┐ рдРрдк рдЦреБрд▓рд╛ рд╣реИред рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдПрдХ рдРрдк рдХреЛ рдЬрдЧрд╛рдирд╛ рдорд╣рдВрдЧрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдЗрд░рд╛рджрд╛ рд╣реЛред
рдЗрд╕реА рд╕рдордп, рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рд╢рд╛рдпрдж рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ setTimeout
рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрднреА рд▓реАрди рдХреЛрд░ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдХрд╛рд░рдг рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╕рддрд╣ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ react-native-background-timer
рдЬреИрд╕реА рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рд╣реИред
рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ setTimeout
рдХреА рд╢реБрджреНрдзрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдЗрд╕ рд╢реБрджреНрдзрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рд╣рдо рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдЙрдирдХреЗ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@ рд╕реНрдХреЗрд╡-рд╣реЗрдбрд▓реЗрд╕ рдУрдкрд┐рдирд┐рдпрди рдЗрдирдХрдорд┐рдВрдЧред :)
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рд╡реЗ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣реЗ рд╣реИрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рди рдХрд░реЗрдВ, рдХреБрдЫ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдРрд╕реЗ рдРрдк рджреЗрдЦреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрджрд╕реНрде рдиреЛрдЯрд┐рд╕ рднреАред рддрдм рдЖрдкрдХрд╛ рдРрдк рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╣реИрд░рд╛рди рд░рд╣ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреЛрдВред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЗрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХрд╛ рд╕реЗрдЯрдЕрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░рдЦ-рд░рдЦрд╛рд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рднреА рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ рдФрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВред
рдореЗрд░реА рд╕рд▓рд╛рд╣ рд╣реИ, рдЗрд╕ рд╕реВрддреНрд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рд╕реНрдорд╛рд░реНрдЯ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрд╕ рдЙрддреНрддрд░ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдмреАрдЪ (рдпрджрд┐ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ / рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ) рддреЛ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред
рдЯреА рдПрд▓; рдбреЙ;
рд╣рд╛рдВ, рдЖрдк рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рд╣рд░ рдЕрдм рдФрд░ рдлрд┐рд░ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░реНрдпрд╡рд╛рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реИред