Ich möchte eine JavaScript-Funktion in Node.js als Parameter in einer URL von einem Server an einen anderen weitergeben. Ich verwende axios npm Paket die Daten zu senden, hier ist ein Beispiel für den Code:Wie man JavaScript-Funktion in URL übergeben?
let f = function(){
return "Returned Value Here";
}
axios({url: '/', method: 'POST', data: {something: "foo", bar: f}})
.then((response)=>{console.log(response)})
.catch((reason){console.log(reason)})
auf andere Fragen Acccording wurde vorgeschlagen, dass ich eval()
JavaScript-Funktion den Code zu bewerten, aber dies führt zu einem Problem.
Zuerst möchte ich die Funktion auf der Empfängerseite weitergeben und NICHT bewerten. Und selbst wenn ich beurteilen, eine Funktion zu erhalten, wäre es eine benannte Funktion sein (Ich will eine anonyme Funktion zu übergeben), die nicht
verwiesen werden kannZum Beispiel
let bar = eval('function baz(){console.log("Test");}')
bar ist kein Bezug der Funktion (bar ist nicht definiert) und auch wenn Sie typeof baz()
verwenden, ist der zurückgegebene Wert STRING.
Wie kann ich eine Funktion in einer URL übergeben?
Halt in POST-Anfragen Geist senden Daten als binäre
Funktionen haben eine 'toString()' Methode, die die „Quellcode“ der Funktionsdeklaration zurückgibt. –
Ok, was kommt als nächstes? Ich dachte daran, den Code auf "()" aufzuteilen und ihn mit einem Funktionsgenerator oder etwas zu reformieren. Was ist dein Vorschlag? – omarwaleed
Ja ich denke das ist der Weg zu gehen. Sie könnten string manipulation/regex verwenden, um nur den Rumpf der Funktion auszublenden und einen 'Function()' -Konstruktor zu verwenden, um die Funktion neu zu erstellen. Argumente zu übergeben sollte ein bisschen schwieriger sein. IMO jedoch klingt es nicht gut, "Verhalten" von Servern zu übergeben. Sie entwerfen Server so, dass sie ein genau definiertes Verhalten aufweisen und nur Daten hin- und herleiten. –