Ich möchte einen Standard-Callback für HTTP-Anforderungen mit superagent erstellt werden. Die Aufrufe werden alle mit dem async.parallel() Framework durchgeführt und das Gesamtergebnis wird zusammen behandelt. Der Callback sollte die Ergebnisse der HTTP-Requests verarbeiten und bei Auftreten eines Fehlers einen Standardwert zurückgeben. Der Standardwert kann angegeben werden, aber null
wird verwendet, wenn er nicht festgelegt wurde.Curry JavaScript-Funktion für fließend API
ich meine Handler mit einer fließenden Syntax wie folgt konstruieren will:
handle(done).withDefaultValue([])
(leeres Array als Standardwert festgelegt wird)
handle(done)
(null als Standardwert verwendet wird)
I‘ Ich bin relativ neu im Currybetrieb. Hier ist, was ich versucht habe: ich einen Knoten Modul erstellt, die schließlich wie folgt verwendet werden sollen:
Mein Code in handle.js
module.exports = function(done){
this.withDefaultValue = function(defaultValue){
return function(err, result){
if(err){
debug('handling error ' + err + ' and returning default value ' + defaultValue)
return done(null, defaultValue)
}
// sanity check for null and empty objects
result = _.isEmpty(result)?[]:result
done(null, result)
}
}
return this
}
Mein Code in somefile.js
var handle = require('handle')
async.parallel([
function(done){
api.myApiCall(arg1, arg2, handle(done).withDefaultValue([]))
},
function(done){
api.myOtherApiCall(arg1, arg2, handle(done))
}
], function(err, result){
})
obigen Code funktioniert für den ersten Anruf (der mit withDefaultValue([])
, aber nicht für den zweiten Anruf:
Unhandled Error: handle(...).withDefaultValue is not a function
Was mache ich falsch?
, wenn Sie sagen, es funktioniert für den zweiten Anruf aber nicht die erste, Sie meinen, dass die zweite Funktion in 'async.parallel' Werke , aber nicht die, die 'widthDefaultValue' verwendet? – andyk
Sorry, ich habe das falsch geschrieben. Es funktioniert für den ersten Anruf (der mit 'withDefaultValue'), aber nicht für den zweiten Anruf. Das habe ich jetzt in der obigen Beschreibung korrigiert. – tiefenauer
Das hat absolut nichts mit Curry zu tun. Meinen Sie den Begriff "Methodenverkettung"? – Bergi