以下声明为from ember guides,
使用run循环的最常见情况是与a集成 非Ember API,包括某种异步回调。对于 例如:
DOM更新和事件回调
setTimeout和setInterval回调
postMessage和messageChannel事件处理程序
AJAX回调
Websocket回调
我通常会为AJAX请求做,
Ember.$.ajax(
{
type: "POST",
url:"someurl",
contentType: "application/json",
success: function(data) {
//Should I wrap this success callback code in Run loop. or is it safe to leave
//Here I will set properties to display, I might call sendAction/send to communicate with parent.
}
})
我没有遇到任何问题,但有时渲染在回调中更改数据后花费了太多时间?有没有人面对这个问题?
我应该使用ember-ajax addon在Ember运行循环中包装成功回调吗?
PS:下面是from ember guides, 你应该在Ember.run中包装任何非Ember异步回调。如果不这样做,Ember将尝试为您预测开始和结束。依靠自动运行不是一种严格或有效的方式来使用运行循环。
答案 0 :(得分:1)
这对我有用。基本上,您只需要将操作/回调包装在run.bind循环中即可。 https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/jquery-ember-run.md
import $ from 'jquery';
import { bind } from '@ember/runloop';
$.ajax({
type: "POST",
url:"someurl",
contentType: "application/json",
}).then(bind(this, (data) => {
// Handle success here
});