如何在 vanilla javascript 中实现承诺以等待转换完成?

匿名用户

我在遍历项目列表并通过 vanilla javascript 淡入淡出时遇到了困难。假设我有一个字符串列表 ["cat", "ball", "bat", "mouse"]。

我想遍历这些项目并一一显示。例如,首先我需要显示“cat”,然后继续显示“bat”。为了做到这一点,我必须先等到“猫”淡入,等待它淡出,然后显示“蝙蝠”。目前,我只是在使用 for 循环,循环会直接进入“鼠标”列表的末尾,而不是等待其他元素完成淡入淡出。

为了解决这个问题,我知道我需要使用异步编程、回调、promise API 等,但我并没有真正使用这些,所以我不知道如何实现这个解决方案。非常感谢有关如何将异步编程与“setInterval()”一起使用的任何帮助或说明。

这是我的代码片段:

var textarr = ["cat", "ball", "bat", "mouse"]
for(let i=0; i<textarr.length; i++){
  var text_item = document.getElementById('text_item');
  text_item.style.opacity = 0;
  text_item.innerHTML = textarr[i];
  // problem lies here; this is skipping to end of the list (mouse)
  fadeIn(text_item);
}

//function borrowed from stack overflow to fadeIn elements

function fadeIn(element) {
    var op = 0.1;  // initial opacity
    element.style.display = 'block';
    var timer = setInterval(function () {
        if (op >= 1){
            clearInterval(timer);
        }
        element.style.opacity = op;
        element.style.filter = 'alpha(opacity=' + op * 100 + ")";
        op += op * 0.1;
    }, 100);
}
蒂姆·克莱因

利用transitionend@RwwL 在评论中提到事件:

let display = document.getElementById('display');
const animals = ['dog', 'cat', 'mouse'];
let i = 0;

display.addEventListener('transitionend', function(event) {
  if (i < animals.length) {
    if (!display.classList.contains('fadeIn')) {
      display.innerHTML = animals[i++];
    }
    display.classList.toggle('fadeIn');
  }
}, false);

// Set timeout, otherwise the transition won't take effect (there are ways around this)
setTimeout(() => {
  display.classList.toggle('fadeIn');
}, 1000);
#display {
  color: #FFFFFF;
  transition: color 1s ease-in;
}

#display.fadeIn {
  color: #000000;
}
<div id="display">Animal Names Here</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Vanilla JavaScript中执行$('。div a')?

来自分类Dev

如何在 vanilla javascript 中通过 DOM 创建多个元素?

来自分类Dev

如何在vanilla JavaScript中将数字与数组中的数字匹配?

来自分类Dev

如何从 vanilla javascript 中的输入获取对象

来自分类Dev

如何使用 Vanilla JavaScript 或 JQuery 实现受控组件(在 ReactJS 中)

来自分类Dev

Svelte中的Vanilla JavaScript

来自分类Dev

如何使用 vanilla JavaScript 刷新 JSON 请求中的表格行

来自分类Dev

如何在 Vanilla JavaScript ES6+ 中从 DOM 集合中获取唯一元素

来自分类Dev

如何在VANILLA JS中等待事件进入循环?

来自分类Dev

Vanilla Javascript,如何读取本地JSON文件

来自分类Dev

如何使用 moment 或 vanilla JavaScript 在 JavaScript 中获取日期字符串格式?

来自分类Dev

没有线程如何在Javascript中实现承诺

来自分类Dev

如何在Vanilla JS数组中定位“ this”元素

来自分类Dev

如何在Vanilla JS中插入媒体查询?

来自分类Dev

如何在Vanilla JS中显示和隐藏文本?

来自分类Dev

Vanilla-javascript 中的可选参数

来自分类Dev

lodash.differenceBy 在 vanilla javascript 中?

来自分类Dev

如何防止在 vanilla javascript 中的事件侦听器中重复?

来自分类Dev

如何使用Vanilla JavaScript从Angular 11 Form中的选定单选按钮获取价值

来自分类Dev

如何使用Vanilla JavaScript搜索和替换HTML文件中的所有标签?

来自分类Dev

如何在 AngularJS 中使用 jQuery SlideUp 方法的 vanilla JavaScript 要点

来自分类Dev

如何在单击事件和使用 Vanilla JavaScript 加载新页面后滚动到元素

来自分类Dev

在 vanilla Javascript 中使用 async/await 的顺序承诺

来自分类Dev

如何仅以Vanilla Javascript为目标当前悬停的元素

来自分类Dev

Vanilla JavaScript:如何通过函数参数访问DOM元素属性?

来自分类Dev

如何使用 Vanilla Javascript 获取输入的总价值?

来自分类Dev

JavaScript Vanilla 双向绑定

来自分类Dev

如何在JavaScript中同步打印承诺?

来自分类Dev

使用“ for .. of”循环从Vanilla JavaScript中的Select标签中删除选项

Related 相关文章

  1. 1

    如何在Vanilla JavaScript中执行$('。div a')?

  2. 2

    如何在 vanilla javascript 中通过 DOM 创建多个元素?

  3. 3

    如何在vanilla JavaScript中将数字与数组中的数字匹配?

  4. 4

    如何从 vanilla javascript 中的输入获取对象

  5. 5

    如何使用 Vanilla JavaScript 或 JQuery 实现受控组件(在 ReactJS 中)

  6. 6

    Svelte中的Vanilla JavaScript

  7. 7

    如何使用 vanilla JavaScript 刷新 JSON 请求中的表格行

  8. 8

    如何在 Vanilla JavaScript ES6+ 中从 DOM 集合中获取唯一元素

  9. 9

    如何在VANILLA JS中等待事件进入循环?

  10. 10

    Vanilla Javascript,如何读取本地JSON文件

  11. 11

    如何使用 moment 或 vanilla JavaScript 在 JavaScript 中获取日期字符串格式?

  12. 12

    没有线程如何在Javascript中实现承诺

  13. 13

    如何在Vanilla JS数组中定位“ this”元素

  14. 14

    如何在Vanilla JS中插入媒体查询?

  15. 15

    如何在Vanilla JS中显示和隐藏文本?

  16. 16

    Vanilla-javascript 中的可选参数

  17. 17

    lodash.differenceBy 在 vanilla javascript 中?

  18. 18

    如何防止在 vanilla javascript 中的事件侦听器中重复?

  19. 19

    如何使用Vanilla JavaScript从Angular 11 Form中的选定单选按钮获取价值

  20. 20

    如何使用Vanilla JavaScript搜索和替换HTML文件中的所有标签?

  21. 21

    如何在 AngularJS 中使用 jQuery SlideUp 方法的 vanilla JavaScript 要点

  22. 22

    如何在单击事件和使用 Vanilla JavaScript 加载新页面后滚动到元素

  23. 23

    在 vanilla Javascript 中使用 async/await 的顺序承诺

  24. 24

    如何仅以Vanilla Javascript为目标当前悬停的元素

  25. 25

    Vanilla JavaScript:如何通过函数参数访问DOM元素属性?

  26. 26

    如何使用 Vanilla Javascript 获取输入的总价值?

  27. 27

    JavaScript Vanilla 双向绑定

  28. 28

    如何在JavaScript中同步打印承诺?

  29. 29

    使用“ for .. of”循环从Vanilla JavaScript中的Select标签中删除选项

热门标签

归档