Фоновий ÑкÑипÑ
Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑкÑипÑи пÑÐ´Ñ Ð¾Ð´ÑÑÑ Ð´Ð»Ñ ÑкÑипÑÑв, ÑÐºÑ Ð¼Ð°ÑÑÑ Ð¿ÑаÑÑваÑи безпеÑеÑвно. Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑкÑипÑи â Ñе Ñип ÑкÑипÑÑв, ÑпеÑиÑÑÑний Ð´Ð»Ñ ScriptCat; вони пÑаÑÑÑÑÑ Ñ Ð¿ÑÑоÑниÑÑ Ñа не можÑÑÑ Ð¾ÑÑимаÑи доÑÑÑп до DOM. ÐÑ Ð¼Ð¾Ð¶Ð½Ð° ÑозÑоблÑÑи за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÑÐ¸Ñ ÑÐ°Ð¼Ð¸Ñ GM API, Ñо й Tampermonkey, а пÑимÑÑки Ñодо ÑÑмÑÑноÑÑÑ Ð·Ð°Ð·Ð½Ð°ÑÐµÐ½Ñ Ð² докÑменÑаÑÑÑ.
Фоновий ÑкÑÐ¸Ð¿Ñ (@background)â
Фоновий ÑкÑÐ¸Ð¿Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑÑÑÑÑÑÑ Ð°ÑÑибÑÑом @background. ÐÑн дозволÑÑ ÑкÑипÑÑ Ð¿ÑодовжÑваÑи пÑаÑÑваÑи Ñ ÑÐ¾Ð½Ð¾Ð²Ð¾Ð¼Ñ ÑÐµÐ¶Ð¸Ð¼Ñ Ð¿ÑÑÐ»Ñ Ð²Ð²ÑÐ¼ÐºÐ½ÐµÐ½Ð½Ñ ÑкÑипÑа або запÑÑÐºÑ Ð±ÑаÑзеÑа.
Ðапланований ÑкÑÐ¸Ð¿Ñ (@crontab)â
Ðапланований ÑкÑÐ¸Ð¿Ñ â Ñе ÑÑзновид Ñонового ÑкÑипÑа, Ñо пÑÐ´Ñ Ð¾Ð´Ð¸ÑÑ Ð´Ð»Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ñ, ÑÐºÑ Ð¿Ð¾ÑÑÑбно запÑÑкаÑи повÑоÑÑвано за ÑаÑовим Ñиклом.
Ðапланований ÑкÑÐ¸Ð¿Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑÑÑÑÑÑÑ Ð°ÑÑибÑÑом @crontab. ÐÑн пÑдÑÑимÑÑ Ð¿Ð»Ð°Ð½ÑÐ²Ð°Ð½Ð½Ñ Ð· ÑоÑнÑÑÑÑ Ð´Ð¾ Ñ
вилини Ñа ÑекÑнди Ñа Ð½Ð°Ð´Ð°Ñ ÑозÑиÑений ÑинÑакÑÐ¸Ñ ScriptCat once / once(...), Ñоб ÑникнÑÑи запÑÑÐºÑ Ð±ÑлÑÑе одного ÑÐ°Ð·Ñ Ð² межаÑ
одного ÑаÑового ÑиклÑ.
â ï¸ ÐÑимÑÑки:
- Ð Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑкÑипÑÑ Ð´ÑÑ Ð»Ð¸Ñе пеÑÑий
@crontab - РекомендÑÑÑÑÑÑ, Ñоб ÑÐ°Ñ Ð¾Ð´Ð½Ð¾Ñазового Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑкÑипÑа + ÑÐ°Ñ Ð¿Ð¾Ð²ÑоÑÐ½Ð¾Ñ ÑпÑоби не пеÑевиÑÑвав ÑнÑеÑвал cron, ÑнакÑе Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶ÑÑÑ Ð¿ÐµÑеÑинаÑиÑÑ
ÐÑимÑÑки Ñодо cron-виÑазÑвâ
РеалÑзаÑÑÑ cron Ñ ScriptCat базÑÑÑÑÑÑ Ð½Ð° node-cron Ñз невеликим ÑозÑиÑеннÑм над ÑÑандаÑÑним ÑинÑакÑиÑом cron.
ФоÑÐ¼Ð°Ñ Ð²Ð¸ÑазÑâ
СÑандаÑÑний ÑоÑÐ¼Ð°Ñ Ñз 5 полÑв (Ñекомендовано)â
minute hour day month weekday
РозÑиÑений ÑоÑÐ¼Ð°Ñ Ñз 6 полÑв (не ÑекомендÑÑÑÑÑÑ)â
second minute hour day month weekday
â ï¸ Ð¤Ð¾ÑÐ¼Ð°Ñ Ñз 6 полÑв не ÑекомендÑÑÑÑÑÑ Ð¡ÐµÑедовиÑа бÑаÑзеÑа не можÑÑÑ Ð³Ð°ÑанÑÑваÑи ÑоÑнÑÑÑÑ Ð´Ð¾ ÑекÑнди, Ñ Ñе збÑлÑÑÑÑ Ð½Ð°Ð²Ð°Ð½ÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° пÑодÑкÑивнÑÑÑÑ â планÑÐ²Ð°Ð½Ð½Ñ ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑÑоÑÑнки може заÑÑимÑваÑиÑÑ.
ÐоÑÑÑпний ÑинÑакÑÐ¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ полÑâ
| СинÑакÑÐ¸Ñ | ÐнаÑÐµÐ½Ð½Ñ | ÐÑиклад |
|---|---|---|
* | ÐÑдÑ-Ñке знаÑÐµÐ½Ð½Ñ | * (ÑоÑ
вилини/Ñогодини) |
| ÑиÑло | ÐонкÑеÑне знаÑÐµÐ½Ð½Ñ | 5 (5-Ñа Ñ
вилина) |
a,b,c | ÐÑлÑка диÑкÑеÑÐ½Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ñ | 1,15,30 |
a-b | ÐезпеÑеÑвний дÑапазон | 10-23 |
*/n | ÐÐ¾Ð¶Ð½Ñ n одиниÑÑ | */5 |
a-b/n | ÐÑапазон Ñз кÑоком | 10-50/10 |
ÐÑавила Ð´Ð½Ñ ÑижнÑâ
1â6: понедÑлокâÑÑбоÑа0або7: недÑлÑ
РозÑиÑений ÑинÑакÑÐ¸Ñ onceâ
Що ознаÑÐ°Ñ onceâ
ÐикоÑиÑÑÐ°Ð½Ð½Ñ once Ñ cron-виÑÐ°Ð·Ñ Ð¾Ð·Ð½Ð°ÑаÑ:
У Ð¼ÐµÐ¶Ð°Ñ Ð¿Ð¾ÑоÑного ÑаÑового ÑÐ¸ÐºÐ»Ñ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾ лиÑе одне ÑÑпÑÑне виконаннÑ
ÐавÑÑÑ ÑкÑо пÑзнÑÑÑ Ð¼Ð¾Ð¼ÐµÐ½Ñи ÑаÑÑ Ð² Ð¼ÐµÐ¶Ð°Ñ Ñого Ñамого ÑÐ¸ÐºÐ»Ñ Ð²Ñе Ñе вÑдповÑдаÑÑÑ Ð¿ÑÐ°Ð²Ð¸Ð»Ñ cron, ÑкÑÐ¸Ð¿Ñ Ð½Ðµ запÑÑкаÑимеÑÑÑÑ Ð·Ð½Ð¾Ð²Ñ.
once пÑоÑи once(...)â
| СинÑакÑÐ¸Ñ | ÐÑновне cron-знаÑÐµÐ½Ð½Ñ Ð´Ð»Ñ ÑÑого Ð¿Ð¾Ð»Ñ | ÐÐ¿Ð¸Ñ |
|---|---|---|
once | * (бÑдÑ-Ñке знаÑеннÑ) | ÐапÑÑкаÑÑÑÑÑ Ð½Ð° пеÑÑÐ¾Ð¼Ñ Ð·Ð±ÑÐ³Ñ Ð² ÑиклÑ, без конкÑеÑного ÑаÑÑ |
once(expr) | expr | ÐапÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе в моменÑи, Ñо вÑдповÑдаÑÑÑ expr Ñ ÑиклÑ, Ñ Ð»Ð¸Ñе один Ñаз |
once(expr) дозволÑÑ ÑоÑно вказаÑи моменÑи-кандидаÑи, водноÑÐ°Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑÑÑÑи "лиÑе один запÑÑк за Ñикл". УÑÑ ÑÑандаÑÑÐ½Ñ cron-ÑинÑакÑиÑи (ÑиÑла, дÑапазони, кÑоки, ÑпиÑки) пÑдÑÑимÑÑÑÑÑÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ Ð´Ñжок.
ÐÑиклад поÑÑвнÑннÑ:
* once * * * // бÑдÑ-Ñка Ñ
вилина ÐºÐ¾Ð¶Ð½Ð¾Ñ Ð³Ð¾Ð´Ð¸Ð½Ð¸; запÑÑкаÑÑÑÑÑ Ð½Ð° пеÑÑÐ¾Ð¼Ñ Ð·Ð±ÑгÑ, бÑлÑÑе не запÑÑкаÑÑÑÑÑ ÑÑÑÑ Ð³Ð¾Ð´Ð¸Ð½Ð¸
* once(9-17) * * * // мÑж 9:00 Ñ 17:59 ÑоднÑ, запÑÑкаÑÑÑÑÑ Ñаз на годинÑ
0,30 once * * * // Ñка з Ñ
вилин 0 або 30 збÑгаÑÑÑÑÑ Ð¿ÐµÑÑÐ¾Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ Ð³Ð¾Ð´Ð¸Ð½Ð¸, Ñа й запÑÑкаÑÑÑÑÑ; бÑлÑÑе не запÑÑкаÑÑÑÑÑ ÑÑÑÑ Ð³Ð¾Ð´Ð¸Ð½Ð¸
ÐозиÑÑÑ once = ЧаÑовий Ñикл, Ñкий вона обмежÑÑâ
Ðе б не ÑозмÑÑÑвавÑÑ once / once(...), Ñе ознаÑÐ°Ñ "запÑÑкаÑи лиÑе один Ñаз Ñ Ð¼ÐµÐ¶Ð°Ñ
ÑÑÑÑ ÑаÑÐ¾Ð²Ð¾Ñ Ð³ÑанÑлÑÑноÑÑÑ".
ÐозиÑÑÑ once | ÐоведÑнка |
|---|---|
| поле Ñ Ð²Ð¸Ð»Ð¸Ð½Ð¸ | ÐапÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе Ñаз на Ñ Ð²Ð¸Ð»Ð¸Ð½Ñ |
| поле години | ÐапÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе Ñаз на Ð³Ð¾Ð´Ð¸Ð½Ñ |
| поле Ð´Ð½Ñ | ÐапÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе Ñаз на Ð´ÐµÐ½Ñ |
| поле мÑÑÑÑÑ | ÐапÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе Ñаз на мÑÑÑÑÑ |
| поле Ð´Ð½Ñ ÑÐ¸Ð¶Ð½Ñ | ÐапÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе Ñаз на ÑÐ¸Ð¶Ð´ÐµÐ½Ñ |
ÐÑиклади:
* once * * * // запÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе Ñаз на годинÑ
* * once * * // запÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе Ñаз на денÑ
* 9-18 once * * // запÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе один Ñаз мÑж 9:00 Ñ 18:59 ÑоднÑ
once Ñ Ð¿Ð¾ÑÐ´Ð½Ð°Ð½Ð½Ñ Ð· дÑапазонами / ÑпиÑками / кÑокамиâ
once / once(...) можна поÑднÑваÑи з бÑдÑ-Ñким cron-ÑинÑакÑиÑом, але Ñ Ð»Ð¸Ñе одне пÑавило:
У Ð¼ÐµÐ¶Ð°Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑиклÑ, Ñойно запÑÑк ÑÑпÑÑний, ÑÑÑ Ð¿Ð¾Ð´Ð°Ð»ÑÑÑ Ð¼Ð¾Ð¼ÐµÐ½Ñи, Ñо збÑгаÑÑÑÑÑ, ÑгноÑÑÑÑÑÑÑ
ÐÑиклад 1: ÐÑапазонâ
* 10 once * *
ÐнаÑеннÑ:
- Ð©Ð¾Ð´Ð½Ñ 10:00â10:59 Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñами-кандидаÑами
- ÐÑÑÐ»Ñ Ð¿ÐµÑÑого збÑÐ³Ñ Ð´Ð½Ñ
- 10:05â10:59 бÑлÑÑе не запÑÑкаÑимÑÑÑÑÑ
ÐÑиклад 2: СпиÑокâ
* 1,3,5 once * *
ÐнаÑеннÑ:
- Ð©Ð¾Ð´Ð½Ñ 1:00, 3:00 Ñ 5:00 Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñами-кандидаÑами
- ЯкÑо 1:00 Ñже запÑÑкавÑÑ
- 3:00 Ñ 5:00 бÑде пÑопÑÑено
ÐÑиклад 3: ÐÑокâ
* */4 once * *
ÐнаÑеннÑ:
- Ð©Ð¾Ð´Ð½Ñ 0:00, 4:00, 8:00, 12:00, 16:00 Ñ 20:00 Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñами-кандидаÑами
- ÐÑÑÐ»Ñ Ð¿ÐµÑÑого запÑÑÐºÑ Ð´Ð½Ñ
- ÐодалÑÑÑ Ð¼Ð¾Ð¼ÐµÐ½Ñи не запÑÑкаÑимÑÑÑÑÑ
ÐÑиклад 4: once(...) Ð´Ð»Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¼ÐµÐ½ÑÑв-кандидаÑÑвâ
* once(9-17) * * *
ÐнаÑеннÑ:
- Ð©Ð¾Ð´Ð½Ñ 9:00â17:00 Ñ Ð³Ð¾Ð´Ð¸Ð½Ð°Ð¼Ð¸-кандидаÑами
- Цикл ÑкидаÑÑÑÑÑ Ñогодини; Ñ Ð¼ÐµÐ¶Ð°Ñ Ð³Ð¾Ð´Ð¸Ð½Ð¸ пеÑÑий збÑг зÑпинÑÑ Ð¿Ð¾Ð´Ð°Ð»ÑÑÑ Ð·Ð°Ð¿ÑÑки
- ÐÑекÑ: запÑÑкаÑÑÑÑÑ Ñаз на Ð³Ð¾Ð´Ð¸Ð½Ñ Ð¼Ñж 9:00 Ñ 17:00 ÑоднÑ, загалом 9 ÑазÑв
* 9-18 once * *
ÐнаÑеннÑ:
- Ð©Ð¾Ð´Ð½Ñ 9:00â18:59 Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñами-кандидаÑами
onceÑ Ð¿Ð¾Ð»Ñ Ð´Ð½Ñ ÑÑкÑÑÑ Ñикл Ñк один Ñаз на денÑ- ÐÑÑÐ»Ñ Ð¿ÐµÑÑого збÑÐ³Ñ Ð´Ð½Ñ Ð½ÑÑого бÑлÑÑе не запÑÑкаÑÑÑÑÑ Ð´Ð¾ 18:59
ÐÑиклади @crontabâ
ÐвиÑайнÑâ
//@crontab * * * * * // запÑÑкаÑÑÑÑÑ Ñаз на Ñ
вилинÑ
//@crontab * * * * * * // запÑÑкаÑÑÑÑÑ Ñаз на ÑекÑÐ½Ð´Ñ (не ÑекомендÑÑÑÑÑÑ)
//@crontab 0 */6 * * * // запÑÑкаÑÑÑÑÑ Ñогодини ÐºÐ¾Ð¶Ð½Ñ 6 годин
//@crontab 15 */6 * * * // запÑÑкаÑÑÑÑÑ Ð½Ð° 15-й Ñ
Ð²Ð¸Ð»Ð¸Ð½Ñ ÐºÐ¾Ð¶Ð½Ñ 6 годин
//@crontab * once * * * // запÑÑкаÑÑÑÑÑ ÑонайбÑлÑÑе Ñаз на годинÑ
//@crontab * * once * * // запÑÑкаÑÑÑÑÑ ÑонайбÑлÑÑе Ñаз на денÑ
//@crontab * 10 once * * // запÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе один Ñаз Ñ Ð¼ÐµÐ¶Ð°Ñ
10:00 ÑÐ¾Ð´Ð½Ñ (напÑ., ÑкÑо запÑÑÑивÑÑ Ð¾ 10:04, не запÑÑкаÑимеÑÑÑÑ Ð·Ð½Ð¾Ð²Ñ Ð· 10:05 до 10:59)
//@crontab * */4 once * * // пеÑевÑÑÑÑ ÑонайбÑлÑÑе Ñаз на 4 години ÑÐ¾Ð´Ð½Ñ (напÑ., ÑкÑо запÑÑÑивÑÑ Ð¾ 4:00, не запÑÑкаÑимеÑÑÑÑ Ð·Ð½Ð¾Ð²Ñ Ð¾ 8, 12, 16, 20, 24 ÑоÑо)
ÐÑоÑÑнÑÑÑâ
//@crontab * 1,3,5 once * * // запÑÑкаÑÑÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз о 1:00, 3:00 або 5:00 ÑÐ¾Ð´Ð½Ñ (напÑ., ÑкÑо запÑÑÑивÑÑ Ð¾ 1:00, не запÑÑÑиÑÑÑÑ Ð¾ 3:00 або 5:00)
//@crontab * 10-23 once * * // запÑÑкаÑÑÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз мÑж 10:00 Ñ 23:59 ÑÐ¾Ð´Ð½Ñ (напÑ., ÑкÑо запÑÑÑивÑÑ Ð¾ 10:04, не запÑÑкаÑимеÑÑÑÑ Ð· 10:05 до 23:59)
//@crontab * once 13 * * // запÑÑкаÑÑÑÑÑ Ñаз на Ð³Ð¾Ð´Ð¸Ð½Ñ 13-го ÑиÑла кожного мÑÑÑÑÑ
//@crontab * once(9-17) * * * // запÑÑкаÑÑÑÑÑ Ñаз на Ð³Ð¾Ð´Ð¸Ð½Ñ Ð¼Ñж 9:00 Ñ 17:00 ÑоднÑ
//@crontab 0,30 once * * * // Ñка з Ñ
вилин 0 або 30 збÑгаÑÑÑÑÑ Ð¿ÐµÑÑÐ¾Ñ Ñогодини, Ñа й запÑÑкаÑÑÑÑÑ; без повÑоÑÑ ÑÑÑÑ Ð³Ð¾Ð´Ð¸Ð½Ð¸
//@crontab * 9-18 once * * // запÑÑкаÑÑÑÑÑ Ð»Ð¸Ñе один Ñаз мÑж 9:00 Ñ 18:00 ÑоднÑ
РекомендаÑÑÑ Ñодо викоÑиÑÑаннÑâ
ÐаÑне заÑÑоÑÑÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ onceâ
-
ÐавданнÑ, ÑÐºÑ Ð¿Ð¾ÑÑебÑÑÑÑ Ð»Ð¸Ñе одного запÑÑÐºÑ Ð½Ð° денÑ/годинÑ
-
СкÑипÑи пеÑевÑÑки ÑÑаÑÑÑÑ, ÑÐ¸Ð½Ñ ÑонÑзаÑÑÑ Ñа звÑÑноÑÑÑ
-
Ð£Ð½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ ÑÐ°ÐºÐ¸Ñ Ð¿Ñоблем:
- ÐÑаÑÐ·ÐµÑ Ð½Ðµ вÑдкÑивавÑÑ ÑÑивалий ÑаÑ
- ÐаÑÑимки планÑÐ²Ð°Ð½Ð½Ñ ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑÑоÑÑнки
- ÐÑблÑÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑеÑез пеÑезапÑÑк бÑаÑзеÑа
Ðе ÑекомендÑÑÑÑÑÑ Ð´Ð»Ñ onceâ
- ÐавданнÑ, ÑÐºÑ Ð¼Ð°ÑÑÑ Ð²Ð¸ÐºÐ¾Ð½ÑваÑиÑÑ Ð² ÑоÑний моменÑ
- СкÑипÑи, ÑÐ°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑÐºÐ¸Ñ Ð¼Ð¾Ð¶Ðµ знаÑно пеÑевиÑÑваÑи ÑнÑеÑвал cron
- ÐÐ°Ð²Ð´Ð°Ð½Ð½Ñ Ð·Ñ ÑÑÑогими вимогами до ÑзгодженоÑÑÑ ÐºÑлÑкоÑÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ñ
ТеÑÑÑÐ²Ð°Ð½Ð½Ñ cron-виÑазÑвâ
ÐÑд ÑÐ°Ñ ÑеÑÑÑÐ²Ð°Ð½Ð½Ñ cron-виÑÐ°Ð·Ñ Ð±ÑÐ´Ñ Ð»Ð°Ñка, ÑимÑаÑово замÑнÑÑÑ once / once(...) на ÑÑ
Ð½Ñ Ð¾Ñновне знаÑеннÑ:
onceâ*once(expr)âexpr
ÐвеÑнÑÑÑ ÑвагÑ, Ñо ÑнÑÑÑÑменÑи ÑеÑÑÑÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶ÑÑÑ Ð½Ðµ пÑдÑÑимÑваÑи ÑозÑиÑений ÑоÑÐ¼Ð°Ñ Ñз 6 полÑв.
Ð ÐµÐºÐ¾Ð¼ÐµÐ½Ð´Ð¾Ð²Ð°Ð½Ñ ÑнÑÑÑÑменÑи:
Ðа ÑÑоÑÑнÑÑ ÑпиÑÐºÑ ÑкÑипÑÑв наведÑÑÑ ÐºÑÑÑÐ¾Ñ Ð½Ð° ÑÑовпеÑÑ ÑÑаÑÑÑÑ Ð·Ð°Ð¿ÑÑкÑ, Ñоб побаÑиÑи наÑÑÑпний запланований ÑÐ°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑкÑипÑа.
ÐÑÑналиâ
Ðа ÑÑоÑÑнÑÑ ÑпиÑÐºÑ ÑкÑипÑÑв Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð½Ñ ÐºÑÑÑоÑÑ Ð½Ð° ÑÑовпеÑÑ ÑÑаÑÑÑÑ Ð·Ð°Ð¿ÑÑÐºÑ Ð¿Ð¾ÐºÐ°Ð·ÑÑ Ð¿ÑÐ´ÐºÐ°Ð·ÐºÑ Ð·Ñ ÑÑаÑÑÑом запÑÑÐºÑ ÑкÑипÑа;
наÑиÑÐºÐ°Ð½Ð½Ñ Ð²ÑдкÑÐ¸Ð²Ð°Ñ Ð²Ð¼ÑÑÑ Ð¶ÑÑналÑ, надÑÑкований ÑеÑез GM_log.

ÐÐ°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ ÑкÑипÑÑвâ
Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑкÑипÑи можна налагоджÑваÑи безпоÑеÑеднÑо Ð·Ñ ÑÑоÑÑнки ÑедакÑоÑа ÑкÑипÑÑв, але Ñе Ð¼Ð°Ñ ÑÐ°ÐºÑ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ:
valueÑÐ¸Ð½Ñ ÑонÑзÑÑÑÑÑÑ Ð½ÐµÐ¿ÑавилÑно- менÑ
registerMenuне ÑпÑаÑÑовÑÑÑÑ Ð½Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¼ Ñином

Щоб налагодиÑи ÑеалÑне ÑеÑедовиÑе виконаннÑ, ÑвÑмкнÑÑÑ Ð ÐµÐ¶Ð¸Ð¼ ÑозÑобника в налаÑÑÑваннÑÑ
ÑозÑиÑеннÑ, поÑÑм вÑдкÑийÑе ÑÑоÑÑÐ½ÐºÑ background.html ÑозÑиÑÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ.
Ðомилки, Ñо виникаÑÑÑ Ð¿Ñд ÑÐ°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ, Ñакож можна пеÑеглÑнÑÑи в жÑÑÐ½Ð°Ð»Ñ Ð·Ð°Ð¿ÑÑкÑ.

Promiseâ
ÐаÑÑÑйно ÑекомендÑÑÑÑÑÑ Ñакий Ñаблон, оÑкÑлÑки вÑн Ñакож дозволÑÑ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑÑ ÑкÑипÑÑв конÑÑолÑваÑи Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑкÑипÑа.
ЯкÑо ÑкÑÐ¸Ð¿Ñ Ð²Ð¸ÐºÐ¾Ð½ÑÑ Ð±ÑдÑ-ÑÐºÑ Ð°ÑинÑ
ÑÐ¾Ð½Ð½Ñ Ð¾Ð¿ÐµÑаÑÑÑ, вÑн Ð¼Ð°Ñ Ð¿Ð¾Ð²ÐµÑÑаÑи Promise.
// ==UserScript==
// @name Background Script
// @namespace wyz
// @version 1.0.0
// @author wyz
// @background
// ==/UserScript==
return new Promise((resolve, reject) => {
if (Math.round((Math.random() * 10) % 2)) {
resolve("ok"); // ÑÑпÑÑно
} else {
reject("error"); // невдаÑа, з пÑиÑÐ¸Ð½Ð¾Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸
}
});
// ==UserScript==
// @name Scheduled script that runs once a day
// @namespace wyz
// @version 1.0.0
// @author wyz
// @crontab * * once * *
// ==/UserScript==
return new Promise((resolve, reject) => {
if (Math.round((Math.random() * 10) % 2)) {
resolve("ok"); // ÑÑпÑÑно
} else {
reject("error"); // невдаÑа, з пÑиÑÐ¸Ð½Ð¾Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸
}
});
// ==UserScript==
// @name Call an API
// @namespace wyz
// @version 1.0.0
// @author wyz
// @crontab * * once * *
// ==/UserScript==
return new Promise((resolve, reject) => {
GM_xmlhttpRequest({
url: "https://bbs.tampermonkey.net.cn/",
onload() {
resolve("ok"); // ÑÑпÑÑно
},
onerror() {
reject("error"); // невдаÑа, з пÑиÑÐ¸Ð½Ð¾Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸
},
});
});
Ðбов'Ñзково викликайÑе resolve / reject лиÑе пÑÑÐ»Ñ Ñого, Ñк логÑка ÑкÑипÑа ÑпÑÐ°Ð²Ð´Ñ Ð·Ð°Ð²ÐµÑÑилаÑÑ.
ÐÑÑÐ»Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Ð²Ð²Ð°Ð¶Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑкÑипÑа завеÑÑеним, Ñ Ð¿Ð¾Ð´Ð°Ð»ÑÑÑ GM-опеÑаÑÑÑ Ð±ÑлÑÑе не дÑÑÑимÑÑÑ.
ÐовÑоÑна ÑпÑоба пÑи помилÑÑâ
Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑкÑипÑи ScriptCat пÑдÑÑимÑÑÑÑ Ð¿Ð¾Ð²ÑоÑÐ½Ñ ÑпÑÐ¾Ð±Ñ Ð¿Ñи помилÑÑ.
Ðоли ÑкÑÐ¸Ð¿Ñ Ð·Ð°Ð²ÐµÑÑÑÑÑÑÑÑ Ð½ÐµÐ²Ð´Ð°ÑеÑ, вÑн може reject з CATRetryError, Ñоб запÑÑÑиÑи повÑоÑÐ½Ñ ÑпÑобÑ.
- ÐÑнÑмалÑний ÑнÑеÑвал повÑоÑÐ½Ð¾Ñ ÑпÑоби: 5 ÑекÑнд
- УникайÑе конÑлÑкÑÑ Ð· влаÑним ÑаÑом Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑкÑипÑа, ÑнакÑе може виникнÑÑи дÑблÑÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ
// ==UserScript==
// @name Retry example
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @description try to take over the world!
// @author You
// @crontab * * once * *
// @grant GM_notification
// ==/UserScript==
return new Promise((resolve, reject) => {
GM_notification({
title: "retry",
text: "Retrying in 10 seconds",
});
reject(new CATRetryError("xxx error", 10));
});