【问题标题】:How to return value from debounced function in javascript? [duplicate]如何从javascript中的去抖动函数返回值? [复制]
【发布时间】:2016-10-16 15:22:54
【问题描述】:

我有这样的代码:

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

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

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

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

(codepen link)

而控制台中的结果是:

debouncedFunction() result:  undefined 

originalFunction() result:  some value

如您所见,去抖函数不返回任何内容。我知道这是由 debounced 函数中的内部计时器引起的,但有没有解决这个问题?

【问题讨论】:

    标签: javascript jquery underscore.js throttling debouncing


    【解决方案1】:

    这是因为去抖函数是异步调用的——你不能从它们返回值,尽管你可以调用另一个函数来传递结果:

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

    【讨论】:

      【解决方案2】:

      _.debounce 的底层使用 setTimout,您需要一个回调来从 async 函数返回值。

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

      这是一个很好的链接, https://john-dugan.com/javascript-debounce/

      【讨论】:

        猜你喜欢
        • 2019-09-09
        • 2019-03-20
        • 2011-06-30
        • 1970-01-01
        • 2017-12-29
        • 2019-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多