我注意到console.log(await some_promise());
可以正常工作,但是如果我创建自己的日志函数,它将无法正常工作,并且它说await仅在异步函数中有效。但是然后如何在console.log()中工作呢?如果console.log是异步的,那么它怎么也没有承诺呢?
答案 0 :(得分:1)
但是随后如何在console.log()中工作
不是。传递给函数的参数总是在调用该函数之前 进行求值。即await some_promise()
是在调用 之前评估的,而不是 in 。 console.log
不是console.log
。您的代码等同于
async
或
const result = await some_promise();
console.log(result);
some_promise.then(result => console.log(result))
对您传递给它的价值来自承诺这一事实一无所知。
如果console.log是异步的,那么它怎么也没有承诺?
console.log
函数
async
来取消承诺。仅此而已。它不限制您可以传递给它的值。因此,即使await
是console.log
,您也可以将任何值传递给它。
答案 1 :(得分:0)
这可能对您有用:
async () => {
//get element from DOM
let exampleNode = await $(".example-node")[0]
//then run console.log of that element
await (() => {
console.log(exampleNode)
})()
}