我試圖從Apache Cordova應用程序中將項目添加到共享點列表。它首先提示用戶登錄,然後它會創建一個HTTP Post來輸入數據。在Promise完成之前調用方法
我有以下代碼:
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);
}
});
}
我遇到的問題是,acquireTokenAsync完成之前被稱爲FormatAndUpload方法,所以傳遞到FormatAndUpload方法authResponse變量爲空。
我不太熟悉JavaScript/JQuery中的承諾框架,但我的印象是事件只應在完成前面的方法時觸發。
有沒有人有任何指示我如何在嘗試POST之前正確等待登錄完成?