@hi-takahashi
こちら、調査の上回答させていただきます。
どうぞよろしくお願い致します。
「いいね!」 1
@hexa_support @iwasaki.hexabase
へキサベースさんの方でこれから確認いただく
★ヘキサベースさんから聞いている状況
・関連事象を確認済み。(callAPI コールバック内でログ出力されない)
★自分の想定(思い当たること)
・callAPI 非同期処理結果を待たずにタスク(キュー)みたいに積まれてる?
・スクリプト終わった後にコールバックが処理されていて、スクリプト終わった時点でログ出力されてない?
・↑の通り処理順が問題の場合は、await callAPI とか非同期処理結果を待てるようにしたり、非同期処理後にスクリプト処理が動くようになれば解消される?
・エラーに関してはコールバック内のエラーがスクリプトに届いてないのかも(コールバック内エラーthrowがcatchされない)
・↑のとおりならコールバック内のエラーをcatchできるようになれば行けそう
「いいね!」 1
@hi-takahashi
本件の解決策として、ActionScriptからPromiseを返却する形で実装できるよう改善対応を実施しております。多少仕様が変わる可能性はありますが、正式にはリリース時にご案内いたします。
例えば、ActionScriptへの登録例として、以下のような形で実装できるようになる予定です。
(async function(data) {
return new Promise((resolve, reject) => {
const appId = "TestApp";
const datastoreId = "TODO-SAMPLE"
logger.log("Process starting...")
// first call
const url = `api/v0/applications/${appId}/datastores/${datastoreId}/items/search`;
const payload = {
use_display_id: true,
omit_fields_data: true,
conditions: [],
per_page: 1,
page: 1
}
callAPIAsync('POST', url, payload).then(res => {
logger.log("Proc1 Called")
// next call
const url = `api/v0/applications/${appId}/datastores/${datastoreId}/items/search`;
const payload = {
use_display_id: true,
omit_fields_data: true,
conditions: [],
per_page: 1,
page: 1
}
return callAPIAsync('POST', url, payload) // you can return promise
}).then(res => {
logger.log("Proc2 Called")
// call resolve() if you want to proceed
resolve();
}).catch(e => {
logger.error("ERR !!")
// call reject() if you want to stop action execution
reject({
"result": "Stopped",
"error" : "error messages"
}); // result object will be returned to Hexabase's API result
});
});
})
rejectして、Action実行を停止した場合は、以下のように結果が返る方向で開発を進めております。
{
"details": {
"logs": [
"Process starting...",
"Proc1 Called",
"Proc2 Called",
],
"result": {
"error": "error messages",
"result": "Stopped"
},
"status": "REJECTED",
"stop_execution": true
},
"error": ""
}
「いいね!」 1
@hexa_support @iwasaki.hexabase
早急にご対応いただきありがとうございました!
ドキュメント等に使い方が見当たらなかったのですが、どこかに記載されていますでしょうか?
以下返信の通りの使い方で問題ないでしょうか?(callAPIAsyncを使う)
ActionScriptの使い方については、下記を参照してください。
基本操作
保存と読み込み
CLIによるログ出力
CLIツールの基本操作 | Hexabase 開発ガイド