浏览器中没有await
广泛可用的语法。您的选择通常仅限于回调模式或承诺。
NodeJS 遵循大多数异步方法的回调模式。
function someAsyncMethod(options, callback) {
//callback = function(error, data)
// when there is an error, it is the first parameter, otherwise use null
doSomethingAsync(function(){
callback(null, response);
});
}
....
someAsyncMethod({...}, function(err, data) {
if (err) return alert("OMG! FAilZ!");
// use data
});
另一个常见的实现是 promises,比如jQuery 的 .ajax()方法……
var px = $.ajax({...});
px.data(function(data, xhr, status){
//runs when data returns.
});
px.fail(function(err,xhr, status){
//runs when an error occurs
});
承诺类似于事件......
在上述两种方法中,回调语法往往更容易实现和遵循,但可能导致深度嵌套的回调树,尽管您可以使用实用程序模式,如async等方法来克服这一点。