Это потому, что вы не предоставляете обратный вызов.
function doSomethingLater(callback) {
setTimeout(callback, 1000);
}
console.log('This is before the callback');
doSomethingLater(function() {
console.log('This is the callback')
});
Так что, когда вы звоните var gaiaId = getGaia();
вы не переходящая в функцию обратного вызова
[Редактировать] Это то, что ваш код должен был бы выглядеть следующим образом:
function getGaia(callback) {
chrome.identity.getProfileUserInfo(function(userInfo){
var userId = userInfo.id;
// This will call the function that you pass in below
//and pass in userInfo.if as a parameter
callback(userInfo.id);
});
}
var gaiaId = getGaia(function (id) {
// id === userInfo.id from above
// Do something with the id that you pass in
});
Вы можете думать о функциях, подобных переменным в JavaScript,
Таким образом, вы можете присвоить функцию переменной следующим образом:
var foo = function() { ... }
Это означает, что вы можете передать это в функции, как обычные переменные. При передаче функции в качестве параметра, вы присвоив функцию имя, указанное в параметрах:
var foo = function() { ... }
function hasCallback(callback) {
// The following two line do exactly the same thing:
callback(); // Using the function that you passed in
foo(); // Using the function directly
}
hasCallback(foo);
Все, что я сделал выше, вместо создания переменной foo
Я только что создал функцию inline:
var foo = function() { ... }
function hasCallback(callback) {
// The following two line do exactly the same thing:
callback(); // Using the function that you passed in
foo(); // Using the function directly
}
hasCallback(foo);
// Becomes:
function hasCallback(callback) {
callback(); // Using the function that you passed in
}
hasCallback(function() { ... });
Вы уверены, что используете 'callback' или' Callback'? Ошибка говорит, что вы используете «Обратный звонок». Но ваш код имеет обратный вызов как строчный. – zero298
по ошибке, «Обратный звонок» - это не функция, здесь C является капиталом в обратном вызове –
Было сделано изменение - это была опечатка – JamesJameson2456