gpt4 book ai didi

ember.js - Ember.run.debounce 不反跳

转载 作者:行者123 更新时间:2023-12-02 22:16:19 25 4
gpt4 key购买 nike

我在 Ember 的子组件中使用 Twitter Typeahead.js,我提供了一个 dataSource 函数(见下文)。此数据源函数查询远程服务器。我想在 Ember 中消除这个查询,但它似乎不起作用。

这和runloop有关系吗?我应该包什么东西吗?

import Ember from 'ember';

export default Ember.Component.extend({

dataResponse: [],
dataSource: function () {
var component = this;

// function given to typeahead.js
return function (query, cb) {

var requestFunc = function () {
var encQuery = encodeURIComponent(query);
Ember.$.getJSON('/api/autocompletion?prefix=' + encQuery).then(function (result) {
// save results
component.set('dataResponse', result.autocompletion);
// map results
var mappedResult = Ember.$.map(result.autocompletion, function (item) {
return { value: item };
});
cb(mappedResult);
});
};

// this is not debounced, why? :|
Ember.run.debounce(this, requestFunc, 500); // debounce by 500ms
};
}.property()

});

注意:我不将 Bloodhound 与 Typeahead.js 一起使用,因为我需要访问结果。定制解决方案一开始似乎更容易。

最佳答案

Debounce 的工作原理是根据上下文/函数创建唯一的键。当您随后调用它时,它会将现有键与传入的上下文/功能键进行比较。每次调用 debounce 时都会传入不同的函数,这就是为什么它无法按您期望的方式工作的原因。

关于ember.js - Ember.run.debounce 不反跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com