Я собираюсь добавить элемент в список sharepoint из приложения Apache Cordova. Сначала он запрашивает пользователя для входа в систему, после чего он сделает HTTP-сообщение таким образом, чтобы вводить данные.Вызов метода перед обещанием
У меня есть следующий код:
function saveToSharepoint(data) {
var authority = "https://login.microsoftonline.com/common/";
var authContext = new Microsoft.ADAL.AuthenticationContext(authority);
var authResult = authContext.acquireTokenAsync("https://my.sharepoint.com", "4be098f8-2184-4831-9ef7-3d17dbbef6a0", "http://localhost:4400/services/office365/redirectTarget.html")
.then(FormatAndUpload(authResult, data), errorCallback);
}
function FormatAndUpload(authResponse, data) {
var token = authResponse.accessToken;
var expiry = authResponse.expiresOn;
console.log("Token acquired: " + authResponse.accessToken);
console.log("Token will expire on: " + authResponse.expiresOn);
$.ajax({
url: "https://my.sharepoint.com/_api/web/lists/getbytitle('" + Test + "')/items",
type: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(data),
headers: {
"Accept": "application/json;odata=verbose",
"Authoriztion":"Bearer " + token
},
success: function (data) {
success(data);
},
error: function (data) {
failure(data);
}
});
}
Проблема, которую я имею, что метод FormatAndUpload вызывается перед тем acquireTokenAsync завершена, так что переменная authResponse передается в метод FormatAndUpload равна нулю.
Я не слишком знаком с рамкой обещания в Javascript/JQuery, но у меня создалось впечатление, что событие должно срабатывать только по завершении предыдущего метода.
У кого-нибудь есть указатели на то, как я могу правильно подождать, когда логин будет завершен, прежде чем пытаться выполнить POST?