0

我的一个 js 文件中有一个名为“updateStatus”的方法。我在每个 JS 文件中定义所有内容,如下所示。

现在我想让这个函数异步,但是如果我在下面的函数声明前面放一个异步,我会收到一个错误,说它需要在同一行上有一个分号。

scope.updateStatus = async function(profileId, isConnected)

'use strict';

// Set local tp namespace
if (typeof yb === 'undefined')
  var yb = {};

$(function() {
  yb.chat.initializeChat();
});

yb.chat = new function() {
  var scope = this;

  scope.initializeChat = function() {
    scope.initializeHub();
  };

  scope.updateStatus = function(profileId, isConnected) {
    // do some work
  };

  scope.initializeHub = function() {
    scope.chat = $.connection.chatHub;

    scope.chat.client.setConnectionStatus = function(profileId, isConnected) {
      scope.updateStatus(profileId, isConnected);
    };
  };

};

4

1 回答 1

2

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

  1. 使用支持异步的浏览器
  2. 使用 Promises 并使用支持 Promises 的浏览器
  3. 不要使用异步(或承诺)。

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

看看下面的代码:

const scope = {};

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

scope.foobar();

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

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

于 2018-11-09T08:22:31.690 回答