簡體   English   中英

難以從異步 function 返回值

[英]Having difficulty returning a value from an async function

我是 Node 新手,之前剛剛為簡單的瀏覽器擴展編寫了 Javascript。 我想要做的是運行 shell 腳本,然后在獲取請求(簡化版)中返回它的文本。

我嘗試過查看回調,但似乎無法理解它,甚至無法將另一個示例改編為我正在嘗試做的事情。 我的主要問題是我收到錯誤“第一個參數必須是字符串或緩沖區類型之一。收到的類型未定義”或“收到的類型函數”(當我嘗試實現回調時,我相信這是我需要在這里做嗎?)。

我已經查看了一些回調和承諾的示例,並且在抽象(或其他上下文)中看到它們對我來說沒有意義,所以希望有人可以幫助我朝着正確的方向前進?

該代碼非常粗糙,但只是在進一步擴展之前嘗試獲得一些基本功能。

var express = require("express");
var app = express();
const { exec } = require("child_process");

var ifcfg = function(callback) {
 exec("ifconfig", (error, stdout, stderr) => {
  if (error) {
   console.log(`error: ${error.message}`);
   return error;
  }

  if (stderr) {
   console.log(`stderr: ${stderr}`);
   return err;
  } else {

   var output = stdout.toString();
   return callback(output);
  }
 });
}

app.get("/ifconfig", (req, res) => res.write(ifcfg(data)));


var port = process.env.PORT || 8080;
app.listen(port, function() {
  console.log("Listening on " + port);
});

在 JavaScript 中, callback是一個 function 作為稍后執行的參數傳遞給另一個 function。

由於命令是異步執行的,一旦命令完成執行,您將需要使用回調來處理返回值:

var express = require("express");
var app = express();
const { exec } = require("child_process");

function os_func() {
    this.execCommand = function(cmd, callback) {
        exec(cmd, (error, stdout, stderr) => {
            if (error) {
                console.error(`exec error: ${error}`);
                return;
            }

            callback(stdout);
        });
    }
}

app.get("/", (req, res) => {
    console.log("InsideGetss");
    var os = new os_func();
    os.execCommand('ifconfig', function (returnvalue) {
      res.end(returnvalue)
});

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM