Если у нас есть две функции в javascript, один slow и один быстрый. Например:Простой, но сложный. Как принудительно запускать внешние функции libs?
function slow() {
setTimeout(function() {console.log("slow finished")}, 10000);
}
function fast() {
console.log("fast");
}
И эти функции не имеют внутри них новых структур, таких как promisses (если мы не реализуем их после).
Как мы можем заставить эти функции работать в порядке? Например:
function run() {
slow();
fast();
}
run();
Как мы можем заставить быстро ждать медленно заканчивается? Я ищу решение, которое может работать внутри браузеров мобильных приложений, из-за моего проекта Apache Cordova.
Есть ли способ сделать это?
Идея моя впрыскивает функцию обратного вызова между функциями. И этот обратный вызов вызывается в конце slow функция, вызывающая быстро функция.
Важно то, что я не могу (или не будет) переписать код из медленно и быстрых функций, , потому что они будут находиться внутри внешних библиотек.
Я ищу решение для решения этой проблемы как внешнего наблюдателя и менеджера.
Как мы можем это сделать?
Редактировать
Он Я был пытается решить проблему слияния ответы. Пока нет успеха. Я изменил slow, но это не разрешено. Я изменил его на то, что происходит с a. Я не мог получить что-то интересное, потому что становится неопределенным сразу, а не после того, как медленно отделки ...
var a = "adsfadsfadsf";
function slow() {
setTimeout(function() {console.log("slow done"); console.log("a2", window.a);}, 3000);
}
function fast() {
console.log("a3", window.a);
console.log("fast done");
}
var newSlow = function() {
return new Promise(function(resolve, reject){
window.a = slow();
console.log("a", a);
resolve("Sucess");
});
};
newSlow().then(function(resolve){fast();}, function(reject){console.log("error");});
Я попытался с решимостью (медленно()); нет sucess тоже.
Если вы знаете, как долго это займет медленное, вы можете поставить быстрый в течение таймаута с более высоким временем. –
Я рассмотрел эту возможность, но мне нужен автоматический метод, который сразу же вызывает другую функцию после завершения медленной. Если у меня есть сетевая проблема или медленность в системе, это не сработает. – GarouDan
Функция slow() возвращает любое значение? –