Я пишу некоторую библиотеку, которая будет предоставлять асинхронные методы, я хочу, чтобы пользователь мог использовать обратные вызовы c класса или современные обещания в зависимости от своих собственных предпочтений.
Я кодировал две версии каждого метода, называя их «myMethod» и «myMethodPromise», и мне в голову пришла мысль:
Почему бы не кодировать метод, объединяющий два шаблона?
Один единственный метод с необязательным аргументом обратного вызова, если не указан, то метод возвращает обещание вместо вызова обратного вызова.
Было бы хорошо практика?
// Promise-callback combined pattern method
function myAsyncMethod ( callback = null ) {
if(callback) {
var result = "xxx";
// Do something...
callback(result);
} else {
return(new Promise((res, rej) => {
var result = "xxx";
// Do something...
res(result);
}))
}
}
// Usage with callback
myAsyncMethod((result)=>document.getElementById('callbackSpan').innerHTML = result);
// or with promise
myAsyncMethod().then((result) => document.getElementById('promiseSpan').innerHTML = result);
<p>
Result with callback : <span id="callbackSpan"></span>
</p>
<p>
Result with promise : <span id="promiseSpan"></span>
</p>
**