为了账号安全,请及时绑定邮箱和手机立即绑定

在 UI5 中对基于 promise 的 API 使用 async/await

在 UI5 中对基于 promise 的 API 使用 async/await

大话西游666 2023-06-09 15:56:02
官方 UI5 文档建议加载一个Fragmentusing promises:Fragment.load({    controller: oFragmentController,        id: oView.getId(),        name: "webapp.view.HelloDialog"    }).then((oDialog) => {    oView.addDependent(oDialog);    oDialog.open();});我个人更愿意使用async/await代替:const oDialog = await Fragment.load({    controller: oFragmentController,    id: oView.getId(),    name: "webapp.view.HelloDialog"});oView.addDependent(oDialog);oDialog.open();.then这样的代码重构和从-promises 到UI5 中的async/ 的转换将如何保存?await它会导致一些问题吗?
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您可以在 UI5 中安全地使用async‑,await因为它基本上是 Promise 的语法糖。

<Dialog id="helloDialog">在片段定义中给出,并且this作为当前控制器实例,创建片段将如下所示:

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同步获取文件。


话虽如此,如果该应用程序针对 IE11,则应避免使用async‑ 。await Promiseor -able 函数只能在 IE11 中工作,因为 UI5 附带了一个 polyfill,如果尚未原生支持或完全支持,then则会应用该 polyfill 。*Promise


查看完整回答
反对 回复 2023-06-09
?
HUH函数

TA贡献1836条经验 获得超4个赞

重构非常简单,您还需要做的就是将调用它的方法标记为 as async,这实际上是您需要进行的唯一更改。

如果你不通过像 Babel 这样的工具运行你的代码库,你将遇到的最大的潜在问题是浏览器支持。最大的障碍是 IE 11,许多企业客户仍在使用它。

onFragmentLoad: async function(oEvent) {

  const oDialog = await Fragment.load({

    controller: this,

    id: this.getView().getId(),

    name: "webapp.view.HelloDialog"

  });


  this.getView().addDependent(oDialog);

}


查看完整回答
反对 回复 2023-06-09
  • 2 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信