app.record.create.submit.successイベントでのPromise動作について

お世話になります。

app.record.create.submit.successイベントでのPromise動作についてです。

 

以下のようなコードで、app.record.create.submit.successのイベントにおいて、

保存成功後に、Flagというフィールドコードのドロップダウンフィールド(選択肢はNewとChange)に、Newをセットし、そのあとにPromiseでつなげてChangeに変更したいと考えています。

詳細画面遷移後の値をみると、ChangeになっているのでREST APIの実行自体は成功しているものの、一番最後のalert(err_resp); が実行されてしまいます。

なぜここのcatchに入るのか分からず困っています。

ご存知の方いらっしゃいましたらお教えください。

 

var params = {
“app”:appId,
“id”:recordId,
“record”:{
“Flag”: {
“value”: “New”
},
}
};

return kintone.api(‘/k/v1/record’, ‘PUT’, params)
.then(function(resp){
var appId = kintone.app.getId();
var recordId = event.recordId;
var params = {
“app”:appId,
“id”:recordId,
“record”:{
“Flag”: {
“value”: “Change”
},
}
};

return kintone.api(‘/k/v1/record’, ‘PUT’, params)
})
.then (function(resp){
console.log(resp);
})
.catch (function(err_resp) {
alert(err_resp);
});

mikan さん

Promise オブジェクトを return する必要があります。
return event; を最後の then 処理に追加してみてください。

rex0220さん

 

ありがとうございます。

.then (function(resp){
console.log(resp);
})

を下記のようにする、ということでしょうか。

.then (function(resp){

return event:
console.log(resp);
})

試してみたのですが動作が変わらずでして。。

どうぞよろしくお願いいたします。

 

「return event:」誤ってセミコロンがコロンになっていますね。
あと、イベント処理の記述も確認してください。
catch も下記のようにして、エラー内容を確認してください。

kintone.events.on("app.record.create.submit.success", function(event) {

...

return kintone.api('/k/v1/record', 'PUT', params)
})
.then (function(resp){
console.log(resp);
return event;
})
.catch (function(err_resp) {
alert(err_resp);
console.log(err_resp);
return event;
});

 

rex0220さん

無事解決することができました!ありがとうございました。