Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript typescript承诺:仅在异步函数中允许使用“await”表达式_Javascript_Typescript_Callback_Promise - Fatal编程技术网

Javascript typescript承诺:仅在异步函数中允许使用“await”表达式

Javascript typescript承诺:仅在异步函数中允许使用“await”表达式,javascript,typescript,callback,promise,Javascript,Typescript,Callback,Promise,我创建了以下代码来获取一些数据,我在函数中返回这些数据,并在变量中调用该函数,如下所示: let tmsValue = await GetTMS(fymcl,this.model); console.log("tmsValue",tmsValue); let tms; var GetTMS = async function getTMS(yearMetricCombo, modelData) : Promise<any>{ return new P

我创建了以下代码来获取一些数据,我在函数中返回这些数据,并在变量中调用该函数,如下所示:

 let tmsValue = await GetTMS(fymcl,this.model); 
    console.log("tmsValue",tmsValue);

   let tms;
   var GetTMS = async function getTMS(yearMetricCombo, modelData) : Promise<any>{
     return new Promise((resolve, reject)=>{
     modelData
       .query("11111")
       .where("fymcl").equals(yearMetricCombo) // tm|FY18|Promtions
       .loadAll()
       .exec((error, data) => {
         if (error) {
           reject(error);
         } else {
           tms = String(data.Items[0].attrs.uploadtms);
           resolve(tms);
           // console.log("tms",tms); // iam getting value over here
         }
       });
       return tms;
     });
   }
问题是让tmsValue=wait GetTMSfymcl,this.model;//这一行表示“await”表达式只允许在异步函数中使用


我不确定我需要做什么。

该函数不返回:

 function GetTMS(yearMetricCombo, modelData){
      // NO RETURN STATEMENT HERE
      modelData
      .query("11111")
      .where("fymcl").equals(yearMetricCombo) // tm|FY18|Promtions
      .loadAll()
      .exec((error, data) => {
        console.log("error",error);
        if (error) {
        } else {
          let tms = String(data.Items[0].attrs.uploadtms);
          console.log("tms",tms);
          // this returns from the *arrow function*, not
          // the enclosing function declaration
          return tms;

        }
      });
      // NO RETURN STATEMENT HERE
    }

有关如何从异步调用返回的问题,请参见@CRice注释中链接的问题

您的函数GetTMS没有return语句,因此该函数隐式返回undefined。它看起来像是在进行一个异步db调用,所以您可能希望在这里使用承诺。看一看,我已经用promise更新了,但是现在它说的wait只能在异步函数中使用实际上,wait关键字只能在用async关键字声明的函数中使用。这意味着它不能出现在文件的根级别。如果需要在文件的根目录下使用getTMS函数,则必须将使用其结果的代码放入.then promise回调函数中。如果您需要在另一个函数中使用getTMS,您需要使用前面提到的.then方法,或者将该函数标记为async。我已经将其标记为async,您可以在我的代码中进行一些更新以包含它吗?那么为什么我需要顶部的return语句?您不需要,我只是列出了返回语句可能是但不是的两个地方。这与他们询问的OP错误无关。OP的错误是因为他们试图在异步定义的函数之外使用wait,而您不能这样做。这是使用await.OP的一个核心要求,自从我发布以下内容以来,它已被大量编辑:\