亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

async.waterfall 不同步運行

async.waterfall 不同步運行

至尊寶的傳說 2023-06-29 20:55:30
我正在嘗試使用加密寫入 MD5 哈希令牌的標頭,然后將其作為響應返回。由于某種原因,它實際上并未同步運行。我知道 JS 是一種異步語言,這確實是我現在唯一遇到困難的部分。任何幫助,將不勝感激。這是我到目前為止所擁有的:const crypto = require('crypto');const bodyParser = require('body-parser');const formidable = require('formidable');const async = require('async')app.post('/pushurl/auth', (req, res) =>    var data = req.body.form1data1 + '§' + req.body.form1data2             async.waterfall([            function(callback) {                var token = crypto.createHash('md5').update(data).digest("hex");                callback(null, token);            },            function(token, callback) {                res.writeHead(301,                    {Location: '/dashboard?token=' + token}                );                callback(null)            },            function(callback) {                res.end();                callback(null)            }        ]);            }});輸出:Uncaught Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client<node_internals>/internal/errors.js:256    No debugger available, can not send 'variables'Process exited with code 1
查看完整描述

1 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

是的,JavaScript 是一種異步語言,但它也可以很好地完成同步任務。就您而言,如果您正在處理承諾,則不需要執行任何異步預期。


如果您像下面的示例一樣編寫代碼,它將只會從上到下執行。


但是發生錯誤(可能)是因為您忘記在回調中添加左花括號app.post,這導致datavar 由于隱含的 return 語句() => (隱式)、() => {}(顯式)而立即返回。


const crypto = require('crypto');

const bodyParser = require('body-parser');

const formidable = require('formidable');


app.post('/pushurl/auth', (req, res) => {


  const data = req.body.form1data1 + '§' + req.body.form1data2;

  const token = crypto.createHash('md5').update(data).digest("hex");

  res.writeHead(301, {

    Location: '/dashboard?token=' + token

  });

  res.end();

        

});


查看完整回答
反對 回復 2023-06-29
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號