Я сейчас пытаюсь вернуть значение из функции, которая содержит асинхронную функцию, и я застрял.
В настоящее время я работаю с SharePoint 2013 JSOM, чтобы извлечь адрес электронной почты из столбца Person. Я нашел хорошую функцию, которая делает это, и я решил передать userID в функцию.
Сама функция содержит console.log и выводит ожидаемый результат, однако мне нужны те результаты, откуда я сначала вызвал функцию, поэтому я обнаружил, что мне нужно использовать обратный вызов. Я не могу извлечь переменную из вызывающего метода.
var t = oListItem.get_item('ElementContactFullName').get_lookupId();
var q = getEmail(t, function(returnedValue){});
function getEmail(userId, callback) {
var x = [];
var context = new SP.ClientContext();
var web = context.get_web();
var user = web.get_siteUsers().getById(userId);
context.load(user);
context.executeQueryAsync(function() {
//console.log(user.get_email());
var y = user.get_email();
x.push(y);
}
, function() {
console.log("error");
});
callback(x);
}
Я хочу, чтобы q равнялся адресу электронной почты, чтобы я мог использовать его в другом месте вызывающей функции.
То, что я получаю, является «неопределенным», независимо от того, что я пытаюсь.
Я могу поместить console.log в функцию (returnValue) {}), но это все еще не позволяет мне получить переменную. Не сделано достаточно JScript, чтобы понять очень сложные предположения о предложенном дубликате.