![](/img/trans.png)
[英]Returning data from an async function having another async 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.