Console.log并等待

时间:2018-07-02 18:29:39

标签: javascript node.js asynchronous async-await console.log

我注意到console.log(await some_promise());可以正常工作,但是如果我创建自己的日志函数,它将无法正常工作,并且它说await仅在异步函数中有效。但是然后如何在console.log()中工作呢?如果console.log是异步的,那么它怎么也没有承诺呢?

2 个答案:

答案 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函数

  1. 兑现诺言
  2. 允许您使用async来取消承诺。

仅此而已。它不限制您可以传递给它的值。因此,即使awaitconsole.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)
  })()
}