我必须对应用程序进行大量异步调用,以获取某些字段(来自Microsoft Project)。
这就是异步调用的样子
Office.context.document.getTaskFieldAsync(GUID, Office.ProjectTaskFields.Start,
function (result) {
if (result.status === Office.AsyncResultStatus.Succeeded) {
taskdata.taskStart = result.value.fieldValue;
}
else {
app.showNotification('Error 33:', result.error.message);
}
}
);
我想要一个如下所示的子功能:
function GetAllFields(GUID) {
var taskdata;
Office.context.document.getTaskFieldAsync(GUID,Name....
....
taskdata.Name= result.value.fieldValue;
....
);
Office.context.document.getTaskFieldAsync(GUID,Start....
....
taskdata.Start = result.value.fieldValue;
....
);
Office.context.document.getTaskFieldAsync(GUID,Finish....
....
taskdata.Finish= result.value.fieldValue;
....
);
return taskdata
}
问题是,在任何异步调用触发之前,taskdata对象返回 null ,这是正常行为,但是我需要一种很好的链接这些事件的方法,或者仅在完成所有异步调用时返回。
更新
将异步调用嵌套到另一个中,并且只在最深的调用中返回 taskdata 对象,我认为它会解决问题,但在父函数中,我调用GetAllFields(GUID) ),它向前发展,而不是等待它回来......