无法创建异步Svelte操作

时间:2019-12-04 13:29:05

标签: javascript svelte

我正在尝试在Svelte(use:action指令)上创建异步操作,当我尝试以下“非异步”功能时,它可以正常工作

export default function typewriter(node, options) {
    for (const letter of elementsText[elIndex]) {
        if (!reverse && el.textContent === elementsText[elIndex].join('')) return
        if (reverse && el.textContent === '') return
        if (Array.isArray(interval)) {
            const randomInterval = Math.floor(Math.random() * interval.length)
            // this function needs an `await`
            await sleep(interval[randomInterval])
        } else if (typeof interval == 'number') {
            // this function requires an `await`
            sleep(interval)
        }
        !reverse ? (el.textContent += letter) : (el.textContent = el.textContent.slice(0, -1))
    }
}

但是当我尝试将上面的代码转换为异步函数时,出现以下错误(可能由抛出)

  

Uncaught (in promise) ReferenceError: regeneratorRuntime is not defined

1 个答案:

答案 0 :(得分:0)

  

改编自johnnyBabel 6 regeneratorRuntime is not defined答案

我使用@babel/plugin-transform-runtime。插件描述为:

  

外部化对辅助函数和内置函数的引用,自动填充代码而不会污染全局变量。这实际上是什么意思?基本上,您可以使用Promise,Set,Symbol等内置函数,也可以无缝使用需要Polyfill的所有Babel功能,而不会造成全球污染,使其非常适合于图书馆。

它还包括对异步/等待以及ES 6的其他内置支持。

纱线:

$ yarn add -D @babel/plugin-transform-runtime

npm:

$ npm i -D @babel/plugin-transform-runtime

.babelrc中,添加运行时插件

{
  "plugins": [
    ["@babel/transform-runtime", { "regenerator": true }]
  ]
}