使用await关键字来模拟同步编程

时间:2017-04-20 18:52:34

标签: javascript asynchronous

这就是我做ajax调用的方式:



$(document).on('click','#doit',clicked)
clicked = function() {
  var local = {}
  local.type = 'post'
  local.dataType = 'json'
  local.data = {}
  local.data.myid = 1234
  var promise = $.ajax('myPage.cfm',local)
  promise.done(done)
  promise.fail(fail)

  function done(response) {
  }

  function fail(xhr,status,response) {
    $('body').html(xhr.responseText)
  }
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

在此示例中,donefail是回调。 但我在this article中读到了一个名为await的新关键字。

问:我是否正确地阅读,我不再需要参考回调和承诺?我可以按照以前的方式直接编写同步代码吗?如何使用await关键字重写上面的示例?

1 个答案:

答案 0 :(得分:1)

init()
async function init() {
	var form = {}
	form.type = 'post'
	form.dataType = 'json'
	form.data = {}
	form.data.myid = 1234
	try {
		var ok=true
		var promise = await $.ajax('myPage.cfm',form)
	} catch(xhr) {
		console.log(xhr.responseText)
		ok=false
	}
	if (ok) {
		console.log(promise)
	}
}