如何在范围内使我的javascript函数异步

时间:2018-11-09 07:58:05

标签: javascript asynchronous javascript-scope

我的一个js文件中有一个名为“ updateStatus”的方法。我正在对每个JS文件中的所有内容进行范围界定,如下所示。

现在,我想使此函数异步,但是如果我将异步放在函数声明前面(如下所示),则会收到一条错误消息,提示它期望在同一行上使用半冒号。

<vue-dropzone
  ref="myVueDropzone"
  id="dropzone"
  :options="dropOptions"
  v-on:vdropzone-success="someSuccessMethod">
</vue-dropzone>

...
data() { /* ... */ },
methods: {
  someSuccessMethod(file, response) {
    // your logic
  }
}

scope.updateStatus = async function(profileId, isConnected)

1 个答案:

答案 0 :(得分:2)

tldr :总的来说,您的问题的答案是做以下三件事之一:

  1. 使用支持异步的浏览器
  2. 使用Promises并使用支持Promises的浏览器
  3. 请勿使用异步(或Promises)。

这将有助于解释您在哪里得到该错误。我假设是在浏览器中执行代码时。此外,我假设您的浏览器根本不支持async关键字。

看看下面的代码:

const scope = {};

scope.foobar = async function() {
  return new Promise(resolve => {
    console.log('foobar');
    resolve();
  });
};

scope.foobar();

如果您在最近的Firefox或Chrome浏览器中执行此代码(例如,通过https://jsbin.com),则可以正常运行。但是,在其他/旧版本的浏览器中,这可能会导致您描述的错误。

如果我的假设是错误的,请进一步澄清。