2016-06-15 2 views
1

Ich habe einen Code wie folgt aus:Wie gibt man einen Wert von der entprellten Funktion in Javascript zurück?

var originalFunction = function() { 
    return 'some value'; 
}; 

var debouncedFunction = _.debounce(originalFunction, 3000); 

console.log('debouncedFunction() result: ', debouncedFunction()); 

console.log('originalFunction() result: ', originalFunction()); 

(codepen link)

Und das Ergebnis in der Konsole ist:

debouncedFunction() result: undefined 

originalFunction() result: some value 

Wie Sie sehen können, die entprellten Funktion nichts zurückliefert. Ich verstehe, dass es durch einen internen Timer in der entprellten Funktion verursacht wird, aber ist das da weg?

Antwort

3

das ist, weil entprellten Funktionen asynchron aufgerufen werden - man kann nicht einen Wert von ihnen zurückkehren, obwohl Sie eine andere Funktion übergeben das Ergebnis nennen kann:

var originalFunction = function() { 
    console.log('some value'); 
    // or something like: callback(result) 
}; 

var debouncedFunction = _.debounce(originalFunction, 3000); 

console.log('debouncedFunction() result: ', debouncedFunction()); 
0

unter der Haube _.debounce verwendet setTimout, benötigen Sie einen Rückruf um den Wert von einer async Funktion zurückzugeben.

function originalFunction (callback) { 
    callback("some value"); 
} 

ist hier ein großer Link auf der gleichen, https://john-dugan.com/javascript-debounce/

Verwandte Themen