

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 資料相依性和時間考量
<a name="data-dependencies-timing-considerations"></a>

在 App Studio 中建置複雜的應用程式時，請務必了解和管理不同資料元件之間的資料相依性，例如表單、詳細資訊檢視和自動化支援的元件。資料元件和自動化可能不會同時完成其資料擷取或執行，這可能會導致時間問題、錯誤和意外行為。透過了解潛在的計時問題並遵循最佳實務，您可以在 App Studio 應用程式中建立更可靠且一致的使用者體驗。

有些潛在問題如下所示：

1. **轉譯時間衝突：**資料元件的轉譯順序可能不符合其資料相依性，進而可能導致視覺化不一致或錯誤。

1. **自動化執行時間：**自動化任務可能會在元件完全載入之前完成，導致執行時間執行錯誤。

1. **元件當機：**由自動化提供支援的元件可能會在無效的回應或自動化尚未完成執行時當機。

## 範例：訂單詳細資訊和客戶資訊
<a name="data-dependencies-timing-considerations-example"></a>

此範例示範資料元件之間的相依性如何導致資料顯示中的計時問題和潛在錯誤。

考慮在同一頁面上具有下列兩個資料元件的應用程式：
+ 擷取訂單資料的詳細資訊元件 (`orderDetails`)。
+ 顯示訂單相關客戶詳細資訊的詳細資訊元件 (`customerDetails`)。

在此應用程式中，`orderDetails`詳細資訊元件中有兩個欄位，以下列值設定：

```
// 2 text fields within the orderDetails detail component

// Info from orderDetails Component
{{ui.orderDetails.data[0].name}} 

// Info from customerDetails component
{{ui.customerDetails.data[0].name}} // Problematic reference
```

在此範例中，`orderDetails`元件正在嘗試透過參考元件中的資料來顯示客戶名稱`customerDetails`。這是有問題的，因為`orderDetails`元件可能會在`customerDetails`元件擷取其資料之前轉譯。如果`customerDetails`元件資料擷取延遲或失敗，`orderDetails`元件會顯示不完整或不正確的資訊。

## 資料相依性和時間最佳實務
<a name="data-dependencies-timing-considerations-example"></a>

使用下列最佳實務來緩解 App Studio 應用程式中的資料相依性和計時問題：

1. **使用條件式轉譯：**只有在確認可用時，才會轉譯元件或顯示資料。使用條件式陳述式在顯示資料之前檢查資料是否存在。下列程式碼片段顯示範例條件式陳述式：

   ```
   {{ui.someComponent.data ? ui.someComponent.data.fieldName : "Loading..."}}
   ```

1. **管理子元件可見性：**對於在載入資料之前轉譯子元件的 Stepflow、Form 或 Detail 等元件，請手動設定子元件的可見性。下列程式碼片段顯示根據父元件資料可用性設定可見性的範例：

   ```
   {{ui.parentComponent.data ? true : false}}
   ```

1. **使用聯結查詢：**盡可能使用聯結查詢在單一查詢中擷取相關資料。這可減少個別資料擷取的數量，並將資料元件之間的時間問題降至最低。

1. 在**自動化中實作錯誤處理：**在自動化中實作強大的錯誤處理，以正常管理預期資料不可用或收到無效回應的情況。

1. **使用選用鏈結：**存取巢狀屬性時，如果父屬性未定義，請使用選用鏈結來防止錯誤。下列程式碼片段顯示選用鏈結的範例：

   ```
   {{ui.component.data?.[0]?.fieldSystemName}}
   ```