gpt4 book ai didi

javascript - 控制 ember promise 解析的顺序?

转载 作者:行者123 更新时间:2023-11-30 15:44:50 25 4
gpt4 key购买 nike

我一直在学习教程,使用 ember 2.9.1、node 6.9.1、chrome 53.0.2785.143 和 OS/X 10.11.6。

当我创建此处描述的组件时: https://guides.emberjs.com/v2.8.0/tutorial/autocomplete-component/

我最终遇到了竞争条件。如果我在输入中输入字符 p 并非常快速地按下退格键,我最终会得到按字符 p 过滤的模型,但在文本字段中没有输入。

一些控制台日志表明发生这种情况是因为第二个 promise (返回所有模型,因为输入为空)首先解决,第一个 promise (返回过滤后的模型)第二个解决。

有什么办法可以解决这个问题吗?

最佳答案

为了并发目的,有一个插件叫做:ember-concurrency .您可以将它用于所有异步操作。

还有 ember-power-select使用这个插件。它是一个功能强大的自动完成选择组件。我可以建议您使用它。

编辑 2016-10-25:这是使用 ember-concurrency 解决竞争条件的更新代码(现在具有正确的属性名称):

import Ember from 'ember';
import { task } from 'ember-concurrency';

export default Ember.Component.extend({
classNames: ['list-filter'],
value: '',

init() {
this._super(...arguments);
this.get('filter')('').then((results) => this.set('results', results));
},

handleFilterEntryTask: task(function * () {
const filterInputValue = this.get('value');
const filterAction = this.get('filter');

const filterResults = yield filterAction(filterInputValue);
this.set('results', filterResults);

}).keepLatest(),

actions: {
handleFilterEntry() {
this.get('handleFilterEntryTask').perform();
}
}
});

关于javascript - 控制 ember promise 解析的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228096/

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