14

私はそのようなコードを持っています:

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

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

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

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

(コードペン リンク)

コンソールの結果は次のとおりです。

debouncedFunction() result:  undefined 

originalFunction() result:  some value

ご覧のとおり、デバウンスされた関数は何も返しません。デバウンスされた関数の内部タイマーが原因であることは理解していますが、そのあたりはありますか?

4

1 に答える 1

12

これは、デバウンスされた関数が非同期で呼び出されるためです。結果を渡す別の関数を呼び出すことはできますが、それらから値を返すことはできません。

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

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

console.log('debouncedFunction() result: ', debouncedFunction());
于 2016-06-15T13:21:26.177 に答える