余烬组件,如何等待随机jQuery插件初始化

Ember component, how to wait for random jQuery plugin initialization?

本文关键字:随机 jQuery 插件 初始化 等待 组件 何等待 余烬      更新时间:2023-09-26

我有一个 Ember 组件包装了一个随机的 jQuery 插件。

setUp: on('didInsertElement', function() {
  scheduleOnce('afterRender', () => {
    this.$().datetimepicker();
  });
})

该插件大约需要 250 毫秒才能显示在屏幕上,这导致我编写如下验收测试:

test('clicking toggles visibility', function(assert) {
  let done = assert.async();
  visit('/');
  andThen(function() {
    assert.strictEqual(find('.xdsoft_datetimepicker:visible', 'body').length, 0);
  });
  click('.xdsoft_datetimepicker');
  setTimeout(() => {
    andThen(function() {
      assert.strictEqual(find('.xdsoft_datetimepicker:visible', 'body').length, 1);
      done();
    });
  }, 500);
});

我的目标是更改组件,以便我可以依靠click测试助手来阻止,直到 jQuery 元素出现在屏幕上。像didInsertElement或运行循环这样的东西等待一个承诺,一旦元素出现在屏幕上,我就可以解决这将是完美的。这样的事情存在吗?

您可以考虑创建一个异步等待助手,该助手在继续之前等待插件显示