我注意到async
关键字可以分配任何值,甚至可以用作普通变量:
let async = "world";
console.log(async)
console.log("Hello " + async)
然而,即便如此,它仍像以前一样继续运行:
let async = "world";
async function foo(input) {
return input;
}
let barPromise = foo("bar");
console.log("bar promise is:", typeof barPromise);
console.log("bar promise also has a .then:", typeof barPromise.then === "function");
barPromise
.then(output => console.log("bar promise returns:", output));
console.log("async is still assigned:", async);
foo("Hello ")
.then(output => console.log(output + async));
甚至await
也在做同样的事情:
let await = "world";
console.log("await is:", await)
async function foo(input) {
return input;
}
async function bar(input) {
console.log("before");
let output = await foo(input);
console.log(output);
console.log("after");
}
bar("hello")
这是怎么回事?为什么关键词可以作为变量使用?
首先,我们需要澄清一些事情,以便答案的其余部分更有意义:
async
关键字。有一个异步函数
构造:MDN、ECMAScript语言规范。因此,async
只有在后跟函数时才有特殊含义,可以作为表达式(传统函数和箭头函数),也可以作为声明。因此,名为async
的变量是有效的,因为后面紧跟函数
let foo;
//function declaration
foo function bar() {}; //SyntaxError
任务或任务 我们也可以定义自己的可实现对象。对象应具有以下资格。 < li >它有一个GetAwaiter()方法(实例方法或扩展方法); < li >其GetAwaiter()方法返回一个Awaiter。在下列情况下,对象是一个标识符: < ul > < li >它实现INotifyCompletion或ICriticalNotifyCompletion接口; < li >它有一个IsCompl
我在实验在不同的关键字和运算符周围是如何解释的,发现以下语法是完全合法的: 错误: 未捕获的引用错误:等待未定义 它似乎试图将解析为变量名。。?我期待着 或者是类似于 意外令牌等待 令我恐惧的是,你甚至可以给它分配一些东西: 如此明显错误的东西不应该导致语法错误吗,就像,,等一样?为什么允许这样做,以及第一个片段中到底发生了什么?
我试图在react/electron项目中使用async/await,但它不起作用。我想要的是获取docker容器状态列表。但是安慰。日志(列表)返回未定义的。 有人能帮我吗?:)
在实际应用中,我对 C# 中的异步和 await 方法进行了说明。请考虑以程,这是工作代码的简单版本: 助手.cs 功能控制器.cs processing.js 现在,问题是第三方服务的所需时间更少(例如:2秒),而所需的时间更多(例如:100秒)。进行两个ajax调用并使用异步和等待是为了呈现自我。屏幕上显示数据1,不要等到自己。Data2已被检索。不幸的是,这种情况没有发生,我必须等待100秒
问题内容: 我发现以下陈述: ](https://addyosmani.com/backbone-fundamentals/#getting-set-up) 另外,我读到:该属性等效于,并且等效于。在TodoView示例的render方法中,我们看到用于设置元素的HTML,并用于查找类“edit”的子元素。 问题答案: 和之间有什么区别? 该视图属性 可以从DOM选择器字符串或Element解析;
我是ES6新手,所以我学习Javascript语句。 在测试async/await时,我发现了一些奇怪的行为。 我这样写代码, 输出在这里, 我定义async来运行,并等待每一行同步工作。 预期产量在这里, 谢谢。