javascript - 获取 promise 链的两个返回值

标签 javascript node.js es6-promise

<分区>

我在函数内部有一个 promise 链,我想 console.log 从链内部的 2 个函数返回的值。我该怎么做?使用我当前的代码,我从 si.cpuTemperature() 获取值,然后从 undefined 获取值,但我想从 si.cpu() 获取值> 然后是 si.cpuTemperature()

const si = require('systeminformation');

function getCPUInfo() {
    return new Promise((resolve) => {
        resolve();
        console.log("Gathering CPU information...");
        return si.cpu()
        // .then(data => cpuInfo = data) - no need for this, the promise will resolve with "data"
        .catch(err => console.log(err)); // note, doing this will mean on error, this function will return a RESOLVED (not rejected) value of `undefined`
    })
    .then(() => {
        return si.cpuTemperature().catch(err => console.log(err));
    });
}

getCPUInfo().then((data1, data2) => console.log(data1, data2));

最佳答案

来自docs ,

systeminformation.method() 返回一个 promise 。所以你真的不需要将它包装在一个 promise 构造函数中,即 new Promise()

要获取 cpu 和温度,因为它们彼此不依赖,您可以使用并行 promise 和异步函数,也可以只使用并行 promise

async function getCpuAndTemperature() {
  const [cpu, temperature] = await Promise.all([
      si.cpu(),
      si.cpuTemperature()
  ])

  console.log(cpu, temperature)
}

function getCpuAndTemperature() {
  return Promise.all([
      si.cpu(),
      si.cpuTemperature()
  ])
  .then(([cpu, temperature]) => {
    console.log(cpu, temperature)
  })
}

关于javascript - 获取 promise 链的两个返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55821415/

相关文章:

javascript - 将简单函数直接传递给 es6 Promise.then

Javascript:如果没有 "document.body.onresize",更改 "console.log"不会生效

node.js - NodeJS、 promise 和性能

javascript parse Promise - 更新记录

javascript - 当图像被覆盖时,node.js 无法提供图像

node.js - 显示自上次 pull 以来的提交列表

javascript - 无法将对象转换为原始值

javascript - Promise 解析操作在 ReactJS 应用程序中后期触发

Javascript,具有设置生命周期的对象?

javascript - 从数组/对象/集合中删除匿名 JavaScript 函数