2016-08-02 8 views
0
chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
}); 

Я хочу использовать 'порт' за пределами этой функции API Chrome, как это сделать?Вызов функции javascript вне функции

+0

Вы пытаетесь передать порт переменную в другой метод вместо вызова его сразу? –

ответ

1

Просто:

либо вызвать функцию после ответа передать ей значение:

chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
    callback(port); 

}); 

function callback(value){ 
    console.log(value); //accessed value outside that function 
} 

ИЛИ

создать глобальную переменную и присвоить réponse к нему

var portValue; 
chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
    portValue = port; 

}); 

Зависит от того, как вы хотите использовать значение, вы можете адаптировать любой из методов.

0

Решает проблему?

var currentPort; 
chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
    currentPort = port; 
}); 
+0

Uncaught TypeError: Невозможно прочитать свойство 'postMessage' of undefined КОД: var currentPort; chrome.runtime.onConnect.addListener (функция (порт) { console.assert (port.name == "knockknock"); // Функция aanroepen() {// port.postMessage ({шутка: «Стучите //} port.postMessage ({joke: "Knock knock"}); currentPort = порт; }); currentPort.postMessage ({joke: "Knock knock"}); – user1857116

+0

Похоже, вы пытаетесь вызвать 'postMessage' на' currentPort' перед вызовом слушателя. –

0
someFunction function(){ 
    return chrome.runtime.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.postMessage({joke: "Knock knock"}); 
    return port; 

}); 

var port = someFunction(); 
Смежные вопросы