Skip to content

Instantly share code, notes, and snippets.

@drzhbe
Last active August 29, 2015 14:18
Show Gist options
  • Save drzhbe/cacc4115f388d3753132 to your computer and use it in GitHub Desktop.
Save drzhbe/cacc4115f388d3753132 to your computer and use it in GitHub Desktop.
`once` for QML
/*!
\brief Если `flag` праведный, то выполнить `callback`, иначе подписаться на событие `sig`
Варианты реализации `flag`:
1. передать имя свойства (+ в любой момент времени можно проверить актуальность флага)
2. передать функтор (+ в любой момент времени можно проверить актуальность флага)
3. передать значение свойства (- узнать значение флага можно только в текущий момент времени)
Здесь используется последний, где `flag` — это буль
\param type:bool flag
\param type:Signal sig
\param type:function callback
*/
function once(flag, sig, callback) {
if (flag) return callback();
var ensure = function() {
callback();
sig.disconnect(ensure);
};
sig.connect(ensure);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment