从HTML挂载内调用异步函数

时间:2018-11-05 16:41:27

标签: javascript promise

所以我不得不打开一个函数async,现在我不能在没有错误的情况下调用它。这是可行的:

$('#my-obj').html(
'<li>' +
   '<a href="#"></a>'
   + myFunction("parameter") +
   '<i class="fa fa-arrow-left"></i>' +
   ...
)

将我的函数设为异步:

async function myFunction() {
   //Do some stuff
   return myString;
}  

问题是:它可以正常工作,但返回的字符串是用promise包装的。因此,我尝试做到目前为止的事情:

$('#my-obj').html(
'<li>' +
   '<a href="#"></a>'
   + await myFunction("parameter") +
   '<i class="fa fa-arrow-left"></i>' +
   ...
)  

不起作用。它说该行上有无效字符。
如何进行这项工作?

1 个答案:

答案 0 :(得分:1)

您只能在await函数中使用async。通过async函数,它可以工作:

async function myFunction(x) {
  return x.toUpperCase();
}

(async () => {
  $('#my-obj').html(
  '<li>' +
     '<a href="#"></a>'
     + await myFunction("parameter") +
     '<i class="fa fa-arrow-left"></i>' +
     '</li>'
  );
})()
.catch(error => {
  // Handle error
});
<ul id="my-obj"></ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>