javascript - 如何在 nativescript 中执行 Async/Await?

标签 javascript nativescript

例如,如果我有一个带有 welcome-page.js 和 welcome-view-model.js 的简单应用程序,我将从像这样的 welcome-page.js 开始

 const app = require("tns-core-modules/application");
 const WelcomeViewModel = require("./welcome-view-model");
 const welcomeViewModel = new WelcomeViewModel();

 let page;

 exports.onNavigatingTo = (args) => {

    page = args.object;
    page.bindingContext = welcomeViewModel;

    welcomeViewModel.doSomething().then((response) => {
      page.bindingContext = response
    }).catch((error) => {
       console.log(error);
    })


 }

然后在 welcome-view-model.js 页面上我会有

  const observableModule = require("tns-core-modules/data/observable");
  const ObservableArray = require("tns-core-modules/data/observable-array").ObservableArray;

  function WelcomeViewModel() {

    const viewModel = observableModule.fromObject({
      dpiWidth: platformModule.screen.mainScreen.widthDIPs,
    dpiHeight: platformModule.screen.mainScreen.heightDIPs,
    isSubmitted:false,
    error:"",
    userDetails:"",
    allMonths: new ObservableArray([]),
    month1: new ObservableArray([])
  });

 viewModel.doSomething = (arg) => {
   return doSomethingThatReturnsAPromise();
 }

  return viewModel;
}

module.exports = WelcomeViewModel;

那么我如何将其转换为使用 async/await?我找到了这个 https://www.youtube.com/watch?time_continue=176&v=9F0sRJQYR9k&feature=emb_logo但它没有显示我如何使用 Javascript,本教程中仅使用 Typescript。

最佳答案

如果您认为 promise 可能会失败,您将只使用 async/await 关键字并将它们包装在 try/catch block 中。

 exports.onNavigatingTo = async (args) => {

    ...

    try {
       const response = await welcomeViewModel.doSomething();
       page.bindingContext = response;
    } catch(error) {
        console.log(error);
    }
 }

关于javascript - 如何在 nativescript 中执行 Async/Await?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59585186/

相关文章:

android - java.lang.Exception : Failed resolving method startActivityForResult on class android. 应用程序 Activity

javascript - 如何在 JavaScript 中为内容添加样式?

javascript - 隐藏一个 div 并显示另一个 overtop 时使用 jQuery 进行幻灯片转换

javascript - 在 JavaScript 中重构异步函数

javascript - 尝试分配给只读属性,即使相同的命令在其他地方也有效?

javascript - 导航滚动到列表项中的匹配元素

javascript - 如何在主干中获取具有特定 ID 的项目?

javascript - D3.js:使用 d3.nest() 动态添加键

android - 为什么在 nativescript-angular 应用程序中 application.android.context 未定义?

nativescript - 当应用程序在 Android 平台前台时,Firebase 推送通知不显示