Dies ist die Frage:Kann eine JavaScript-Funktion nur im setTimeout-Callback ausgeführt werden?
Definieren Sie eine Funktion mit dem Namen print
, die nur die Parameter ausdrucken, die es bekommt.
Aber es wird nichts ausdrucken, wenn es normal heißt.
Nur in einem SetTimeout wird der Rückruf wirksam.
z:
setTimeout(function() {
print('123'); //===> 123
});
print('456'); //===> nothing output
ich eine Lösung, aber ich glaube nicht, es ist ein guter Weg, ich schreibe die setTimeout.
Ich möchte neugierig eine bessere Lösung.
var print = function() {
'use strict';
var __origSetTimeout = window.setTimeout;
window.setTimeout = function(fn, delay) {
var _fn = new Function(`(${fn.toString().replace(/print\(/g, 'print.call(this,')}).call(this);`);
return __origSetTimeout.call(window, _fn.bind({
isFromSetTimeout: true
}), delay);
};
return function print(word) {
if (!this || !!this && !this.isFromSetTimeout) return;
console.log(word);
};
}.call(null);
Nicht möglich. Sie müssten entweder einen Kontext definieren oder verschiedene Parameter übergeben, damit die Funktion weiß, ob sie ausgeben soll oder nicht. – Utkanos
Nein. Vielleicht suchen Sie nach etwas anderem, warum möchten Sie diese Funktionalität? – Jerodev
Speichern Sie die ID des Timeouts und verwenden Sie diese. – Jivings