【问题标题】:Why is javascript not taking the async call (async/await)?为什么 javascript 不接受异步调用(async/await)?
【发布时间】:2019-04-05 01:35:20
【问题描述】:

这是我的代码的 sn-p。我是 Promise 和 async/await 的新手。我使用了多个关于 SO 的问题和文章来阅读这些主题。但我似乎无法弄清楚我哪里出错了。 js 文件不喜欢关键字 async 和 this 放在一起。任何指针表示赞赏。产生的错误:“Unexpected token function”

this.loadTheCategory = async function(catName) {
    var fruitsCategories = null;
    var fruitsArray = null;
    if(jsonString) {
        fruitsCategories = JSON.parse(jsonString);
        var title = null;
        if(categoryCache.get(catName)){
            var isCacheable = categoryCache.get(catName);
            if(isCacheable) {
                title = isCacheable[catName] = "None" ? 100 : null;
            }
        }
        await fruitsCategoryCache.set(catName, fruitsCategories, {title : title});
    }

【问题讨论】:

  • async this.loadTheCategory = function ---> this.loadTheCategory = async function
  • 也许这可以帮助你nikgrozev.com/2017/10/01/async-await
  • @CRice 感谢您的建议,但我已经尝试过了,但似乎没有什么不同。
  • @Ariel Alvarado 感谢您发布那篇文章。它使可视化 Promise 和 async/await 的工作方式变得更加容易。我认为这里的问题更多是在同一行中处理关键字 this 和 async。
  • 如果您仍然遇到问题,您可以编辑您的帖子以包含您看到的错误消息或任何其他详细信息吗?否则我无法猜测出什么问题。

标签: javascript asynchronous async-await es6-promise


【解决方案1】:

async 关键字应该出现在函数声明之前,如下所示:

this.loadTheCategory = async function(catName) {
    //...
}

在您的代码中,您在属性之前使用了关键字,这是无效的。

【讨论】:

  • 我已经尝试过 CRice 上面提到的那个,但它仍然在抱怨。现在更多的是关键字“function”。
  • 我不知道您从哪个版本的 javascript 进行编译,但是您可以尝试使用语法 async loadTheCategory(catName) { /*...*/ },因为您在一个类中...
猜你喜欢
  • 2017-10-26
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 2017-05-13
  • 2017-05-02
  • 1970-01-01
  • 2020-04-29
相关资源
最近更新 更多