考慮示例代碼的函數:調用使用默認參數也有所回調
function makeRequest(endpoint, form = {}, qs = {}, callback) {
const exampleObject = {
endpoint,
form,
qs,
};
callback(exampleObject);
}
makeRequest('/example', { foo: 'string' }, { bar: 'string' }, (exampleObject) => {
console.log(exampleObject);
});
在上面的例子中,以下對象將在控制檯上登錄:
{ endpoint: '/example',
form: { foo: 'string' },
qs: { bar: 'string' } }
我怎樣才能使用makeRequest
中的默認值,仍然使用回調?例如,下面的失敗:
makeRequest('/example', (exampleObject) => {
console.log(exampleObject);
});
輸出:
/Users/daniel/example.js:13
callback(exampleObject);
^
TypeError: callback is not a function
at makeRequest (example.js:7:3)
at Object.<anonymous> (example.js:10:1)
at Module._compile (module.js:409:26)
at loader (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:148:5)
at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:158:7)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:160:24
at Object.<anonymous> (/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:7)
這是有道理的考慮,我只發送一個參數。我想知道如何在利用默認參數的情況下撥打makeRequest
並仍然可以回撥。如果回調存在,我將總是必須傳遞三個參數嗎?是否還有其他方法可以解決這個問題,所以我可以選擇僅使用第二個和第三個參數,並且在回調中總是獲得exampleObject
?
不要使用回調。回報承諾。 – Bergi