У меня есть огромная и медленная синхронная функция, которую я хочу обернуть внутри обещания использовать ее асинхронно. Хотя эта функция содержит второстепенные операции, ее лучше выполнять без зависания интерфейса (во избежание гнева пользователя :D).
Я сделал следующее (commons.js, отдельный файл javascript):
exports default {
myHugeFunction: function(params) {
//lots...lots...lots..of synchronous things
}
}
Где я это называю?
Модуль магазина Vuejs
import commons from '/path/to/commons'
export default {
actions: {
updateInterface: function() {
//overlay on
//some syncronous stuff...
Q.fcall(function () {
commons.myHugeFunction(params);
}
//some others syncronous stuff...
//overlay off
}
}
}
Несмотря на это, кажется, что он работает нормально, но у меня застрял весь интерфейс, так как огромная функция завершилась. Я использую наложение перед выполнением и после этого, но я не вижу его накануне, если оно есть в доме (но это, вероятно, еще одна проблема, выходящая за рамки...).
Я предполагаю, что это выполнение как что-то, что может быть обработано отдельным потоком, поэтому пользователь в это время может делать другие вещи.
Это потому, что «возможно» приложение полностью находится во внешнем интерфейсе (браузере)?