You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何将callback回调结果返回给外层getStatusWifi函数

解决方案

iwconfig.status 是异步执行的API,其回调函数的执行时机晚于外层 getStatusWifi 函数的返回时机,因此无法直接通过同步return的方式拿到回调内的status值,可选择以下两种常用方案实现需求:

方案1:沿用回调模式

给getStatusWifi新增回调参数,符合Node.js错误优先的回调约定,把结果通过回调传递给外部调用方。

var iwconfig = require("wireless-tools/iwconfig");
let api = {};

api.getStatusWifi = function (callback) {
  iwconfig.status(function (err, status) {
    // 把错误和结果都传递给回调
    callback(err, status);
  });
};

module.exports = api;

外部调用示例:

const api = require('./你的模块文件路径');
api.getStatusWifi(function(err, status) {
  if (err) {
    // 自定义错误处理逻辑
    console.error('获取Wifi状态失败:', err);
    return;
  }
  // 此处可正常使用status数据
  console.log('Wifi状态数据:', status);
});

方案2:封装为Promise(更推荐,适配async/await语法)

把异步逻辑封装为Promise实例返回,后续可以用更简洁的同步风格写法获取结果。

var iwconfig = require("wireless-tools/iwconfig");
let api = {};

api.getStatusWifi = function () {
  // 返回Promise实例
  return new Promise((resolve, reject) => {
    iwconfig.status(function (err, status) {
      if (err) {
        // 错误场景走reject
        return reject(err);
      }
      // 成功场景走resolve返回结果
      resolve(status);
    });
  })
};

module.exports = api;

外部调用有两种常用方式:

  1. then链调用
const api = require('./你的模块文件路径');
api.getStatusWifi()
  .then(status => {
    console.log('Wifi状态数据:', status);
  })
  .catch(err => {
    console.error('获取Wifi状态失败:', err);
  })
  1. async/await调用(语法更简洁,需要放在async函数内使用)
const api = require('./你的模块文件路径');

async function getWifiInfo() {
  try {
    const status = await api.getStatusWifi();
    console.log('Wifi状态数据:', status);
  } catch (err) {
    console.error('获取Wifi状态失败:', err);
  }
}

getWifiInfo();

内容的提问来源于stack exchange,提问作者Ian Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:27:01