Обратный вызов разницы, обещание и событие JavaScript / React-Native <-> Java / Android

Я читаю о собственные модули в React-Native и Android. В документации различаются

Мне трудно понять разницу между ними тремя. В чем основные отличия и когда что используется?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
989
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратный вызов - это функция, которую вы передаете другой функции, которая затем вызывает ее при выполнении некоторого асинхронного действия:

somethingAsync(function callback(result) { /*...*/ });

Вы увидите этот шаблон довольно часто, поскольку все, что связано с ilelse, основано на обратных вызовах. Однако, если у вас много обратных вызовов, код становится трудно читать и поддерживать, особенно при работе с циклами. Для этого были введены обещания, которые обертывают функцию обратного вызова и позволяют прикреплять обратные вызовы к обещанию. Это позволяет создать красивую цепочку:

 const promise = new Promise(somethingAsync);
 promise.then(function result() { /*...*/ });

Обратите внимание, что обещание выполняется только один раз, а обратные вызовы могут вызываться несколько раз.

События на самом деле не связаны с обещаниями, они позволяют вам прикрепить обратный вызов к объекту, который будет вызываться, когда что-то произойдет, например нажимается кнопка:

 button.onclick = function(event) { /*...*/ }

Как можно вызывать обратный вызов несколько раз? Если вы попытаетесь вызвать метод из собственной части, которая возвращает несколько обратных вызовов, вы получите ошибку. Как говорится в документации: «Собственный модуль должен вызывать свой обратный вызов только один раз. Однако он может сохранить обратный вызов и вызвать его позже». Так же, как и с обещаниями, он разрешится один раз, но позже вы можете вызвать его снова. Я прав? Значит, это означает, что обещания, поскольку общение между native и react для более чистого кода?

M. Wojcik 23.01.2019 10:23

@ m.wojcik нет, вы где-то взяли документацию по одному специальному обратному вызову и применили его ко всем обратным вызовам. [1, 2, 3].forEach(cb), например, вызовет обратный вызов cb три раза.

Jonas Wilms 23.01.2019 12:15

Другие вопросы по теме