Javascript等待异步调用在返回之前完成

时间:2015-10-14 10:45:02

标签: javascript asynchronous

我必须对应用程序进行大量异步调用,以获取某些字段(来自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) ),它向前发展,而不是等待它回来......

0 个答案:

没有答案