如何在 nativescript 中执行 Async/Await?

How to do Async/Await in the nativescript?

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

 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);
    })


 }

然后在欢迎查看-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 块中。

 exports.onNavigatingTo = async (args) => {

    ...

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