簡體   English   中英

Node.js - 回調參數

[英]Node.js - callback parameters

我目前正在學習Node和JavaScript中的回調,我對此感到困惑:

var request = require('request');

request('http://www.google.com', function (error, response, body) {
 if (!error && response.statusCode == 200) {
console.log(body) // Show the HTML for the Google homepage. 
  }
})

我的問題是:請求函數如何知道回調中每個參數/參數是什么? 因為我可以用兩個參數有效地調用函數回調並跳過錯誤? 例如,函數如何知道傳遞的第一個參數是響應而不是錯誤?

它是否在運行時檢查每種類型? 謝謝。

編寫請求API的程序員決定發送給回調的參數的順序。 在運行時沒有類型檢查。 如果你只在回調簽名中提供兩個參數,例如

function(response, body) {}

你仍然會收到錯誤對象和響應 - 只有在這種情況下,名為“response”的變量將保存錯誤對象,名為“body”的變量將保存響應。 你要跳過的輸入將是你沒有提供的第三個,身體。 參數的名稱沒有區別,它們在函數簽名中的位置決定了它們將被賦值的值。

按照慣例,在javascript回調中,回調的第一個參數通常表示錯誤對象。 它並不總是以這種方式編寫,但它是最佳實踐。

Possibile實現這個功能可能是:

function request (url, callback) {
  // doing something

  callback (error, response, body);
}

該函數將設置errorresponsebody參數的值。 我不知道它是如何實現的,但是假設您為url傳遞了一個數字。 可能的實現可能是:

function request (url, callback) {
  if (typeof url === 'number') {
    // Suppose that error is an instance of Error
    callback (new Error ('Url must be a string'), null, null);
  }
  // other stuff...
}

當你調用request()函數並提供一個函數作為參數時,它會在內部(模塊內部)調用該函數,並將它自己的數據作為參數傳入(然后用它來做各種事情)。 它傳入的數據是它自己生成的數據,它不是您正在創建的數據。

這是一個回調

不久之前我回答了一個問題,更深入地了解為什么這些模塊的結構是這樣的,請參閱: npm關於回調錯誤的指導原則

您正在使用特定模塊我的朋友和回調在這種情況下直接從它控制。

回調如何適用於“請求”模塊是研究的問題。 檢查他們的文檔。

暫無
暫無

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

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