Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在outlook JS加载项中调用REST API时确认事件完成_Javascript_Rest_Outlook Addin_Office Addins_Outlook Web Addins - Fatal编程技术网

Javascript 在outlook JS加载项中调用REST API时确认事件完成

Javascript 在outlook JS加载项中调用REST API时确认事件完成,javascript,rest,outlook-addin,office-addins,outlook-web-addins,Javascript,Rest,Outlook Addin,Office Addins,Outlook Web Addins,我正在构建一个JS加载项,只要单击功能区中的按钮,就可以将带有添加注释“STOP”的消息转发到定义的地址。为了转发,我使用POST请求调用restapi 在函数末尾添加event.completed()时,使用(event)作为参数,getCallbackTokenAsync根本不会运行 相反,如果没有它,外接程序会正确地转发消息,但信息栏不会取消显示,脚本会继续在循环中运行: 指示脚本正在运行的信息栏: 在调用RESTAPI时如何正确处理事件.completed() //函数sendAsSt

我正在构建一个JS加载项,只要单击功能区中的按钮,就可以将带有添加注释“STOP”的消息转发到定义的地址。为了转发,我使用
POST
请求调用restapi

在函数末尾添加
event.completed()
时,使用
(event)
作为参数,getCallbackTokenAsync根本不会运行

相反,如果没有它,外接程序会正确地转发消息,但信息栏不会取消显示,脚本会继续在循环中运行:

指示脚本正在运行的信息栏:

在调用RESTAPI时如何正确处理
事件.completed()

//函数sendAsStops直接从清单文件调用
函数sendAsStops(事件){
log(“初始化停止命令”);
var restHost=Office.context.mailbox.restUrl;
var itemId=getItemRestId();
console.log(itemId);
Office.context.mailbox.getCallbackTokenAsync({isRest:true},函数(结果){
if(result.status==Office.AsyncResultStatus.successed){
console.log('Sending email…');
var accessToken=result.value;
控制台日志(结果);
var getMessageUrl=restHost+'/v2.0/me/messages/'+itemId+'/forward';
$.ajax({
url:getMessageUrl,
键入:“post”,
标头:{“授权”:“承载者”+accessToken},
contentType:'应用程序/json',
数据类型:“json”,
数据:JSON.stringify({
'注释':'停止',
'ToRecipients':[{'EmailAddress':{'Address':'name@address.com' }}],
})
}).done(函数(){
log(“停止成功转发”);
}).失败(功能(错误){
console.log(“发送失败”);
});
}否则{
console.log(“无法继续。参考:+结果。状态”);
返回false;
}
});
事件。已完成();
}
函数getItemRestId(){
console.log(“获取项目ID…”);
if(Office.context.mailbox.diagnostics.hostName==='OutlookIOS'){
log(“ID已准备好使用”);
return Office.context.mailbox.item.itemId;
}否则{
console.log('转换ID…);
return Office.context.mailbox.convertorestid(
Office.context.mailbox.item.itemId,
Office.MailboxEnums.RestVersion.v2\u 0
);
}
}必须在外接程序执行结束时调用事件.completed()
。调用
event.completed()
将终止外接程序,因此任何异步调用(如本例中的
getCallbackTokenAsync
callback)都将自动终止并清除。因此,您看不到转发消息的加载项

在整个外接程序执行完成后调用
event.completed()
。比如:

       $.ajax({
          url: getMessageUrl,
          type: 'post',
          headers: { 'Authorization': 'Bearer ' + accessToken },
          contentType: 'application/json',
          dataType: 'json',
          data: JSON.stringify({
            'Comment': 'STOP',
            'ToRecipients': [{'EmailAddress': { 'Address': 'name@address.com' }}],
          })
         }).done(function() {
           console.log("Stop successfully forwarded.");
           event.completed();
         }).fail(function(error) {
           console.log("Failed to send");
           event.completed();
        });