Задача - спрашивать пользователя подтверждение операции удаления.
Что может быть проще?
Но функция askUser() построена на базе Framework7 функции app.confirm() результат, которой передается в callback функции по Ок и Cancel соответственно.
Ну и что? Скажете вы - строим функцию askUser с параметрами для call back функции
Что может быть проще?
if(askUser("Delete all posts?")) {
console.log("delete all posts"); ss.ds.clearPosts();}
Но функция askUser() построена на базе Framework7 функции app.confirm() результат, которой передается в callback функции по Ок и Cancel соответственно.
myApp.confirm(_message, appTitle, function () {
//Ок - нажата
}, function () {
// Cancel нажата
}
);
Ну и что? Скажете вы - строим функцию askUser с параметрами для call back функции
function askUser(_message, _funcOk, _ funcCancel) {
myApp.confirm(_message, appTitle, function () { //Ок - нажата
_funcOk(); }, function () { // Cancel нажата
_funcCancel(); } );
}(При чем callback для cancel нам в этом конкретном случае и не нужен)И это правильное решение! Но про него я вспомнил после обертки асинхронных функций в Promise объект, которые я изучал и изучаю.Промисифицированная функция askUser() выглядит такfunction askUser(_message) { return new Promise(function(resolve, reject){ myApp.confirm(_message, appTitle, function () {
resolve(true);
},
function () { reject(false);
} );
});}Т.е. если пользователь нажал Ок, то Promise объект переходит в состояние resolved, иначе - в состояние reject. А само использование askUser() в этом виде будет такимaskUser("Delete all posts?").then(function(_data){ console.log("delete all posts");
ss.ds.clearPosts();});
Описываю - при нажатии кнопки Ok, promise объект переходит в состояние resolve, а значит последовательно вызывается функция в then, куда передается результат resolve (тут true, но может быть объект).Но что же даёт использование Promise, если можно реализовать тоже самое более простым и привычным способом.РАСШИРЯМОСТЬ. Функциональная.А вот надуманные примеры - спрашивая пользователя мы можем проверить, а имеет ли он вообще спрашивать о подобном, путём запроса прав через ajax запрос на сервер или асинхронный запрос к БД.Или после подтверждения на удаление начинать процедуру удаления, которая тоже построена на базе асинхронного кода (callback ах, у меня в этом месте просто обнуляется массив и сохранятся в таком виде).