2 回答

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以在 UI5 中安全地使用async
?,await
因?yàn)樗旧鲜?Promise 的語法糖。
<Dialog id="helloDialog">
在片段定義中給出,并且this
作為當(dāng)前控制器實(shí)例,創(chuàng)建片段將如下所示:
與this.loadFragment
(自 UI5 1.93 起)
onOpenDialog: async function() {
? const dialog = this.byId("helloDialog") || await this.loadFragment({
? ? name: "webapp.view.HelloDialog"
? });
? dialog.open();
},
與Fragment.load(自 UI5 1.58 起)
// Fragment required from "sap/ui/core/Fragment"
onOpenDialog: async function() {
? let dialog = this.byId("helloDialog");
? if (!dialog) {
? ? dialog = await Fragment.load({
? ? ? id: this.getView().getId(),
? ? ? name: "webapp.view.HelloDialog",
? ? ? controller: this,
? ? });
? ? this.getView().addDependent(dialog);
? }
? dialog.open();
},
舊工廠功能sap.ui.xmlfragment已棄用并*.fragment.xml同步獲取文件。
話雖如此,如果該應(yīng)用程序針對(duì) IE11,則應(yīng)避免使用async? 。await Promiseor -able 函數(shù)只能在 IE11 中工作,因?yàn)?UI5 附帶了一個(gè) polyfill,如果尚未原生支持或完全支持,then則會(huì)應(yīng)用該 polyfill 。*Promise

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
重構(gòu)非常簡單,您還需要做的就是將調(diào)用它的方法標(biāo)記為 as?async
,這實(shí)際上是您需要進(jìn)行的唯一更改。
如果你不通過像 Babel 這樣的工具運(yùn)行你的代碼庫,你將遇到的最大的潛在問題是瀏覽器支持。最大的障礙是 IE 11,許多企業(yè)客戶仍在使用它。
onFragmentLoad: async function(oEvent) {
? const oDialog = await Fragment.load({
? ? controller: this,
? ? id: this.getView().getId(),
? ? name: "webapp.view.HelloDialog"
? });
? this.getView().addDependent(oDialog);
}
添加回答
舉報(bào)