In Javascript auf einen Rückruf passieren Ich habe die folgende Funktion aus einer externen Bibliothek:Wie Parameter ohne Zugriff auf die Mutter-Funktion in Javascript
getParentTabId(callback);
In anderen Teilen des Codes es wie folgt verwendet:
var openTab = function(result){
var parentId = result.Id;
//opentNewTab is another external function
openNewTab(parentId, 'https://www.google.com');
}
function handleOnClick(){
getParentTabId(openTab);
}
und das funktioniert. Mein Ziel ist es, passo eine Variable als zweiter Parameter an openNewTab stattdessen einen festen Wert der Verwendung wie ‚https://www.google.com‘ wie folgt:
var openTab = function(result, url){
var parentId = result.Id;
//opentNewTab is another external function
openNewTab(parentId, url);
}
Ich habe versucht, die folgenden:
function handleOnClick(){
var url = 'http://stackoverflow.com';
getParentTabId(function(result){
openTab(url, result);
});
}
Aber es funktioniert nicht arbeiten, weil der Callback die Variable url
nicht sehen kann. Wenn Sie berücksichtigen, dass ich die Funktion getParentTabId nicht ändern kann, wie würden Sie dieses Problem angehen?
'Aber es funktioniert nicht, da der Rückruf nicht in der Lage ist, die URL variable' zu sehen - es ist nicht wahr. Callback kann die URL-Variable wegen Javascript-Schließung sehen. – Andrey
Könnte es sein, dass Sie die Parameter 'url' und' result' umschalten? openTab erwartet ein 'result, url', aber Sie haben 'url, result' in den Callback geschrieben. – Phortuin