jQuery 3延迟对象为supposed to be Promises/A+ compatible。从this question开始,似乎TypeScript编译器会因此而对你大喊大叫。但是这段代码使用最新版本的jQuery和TypeScript编译得很好:
import $ from 'jquery';
(async () => {
const response = await $.getJSON('https://api.github.com/');
console.log(response);
})();
如果
await
运算符后面的表达式的值不是Promise
,则会转换为resolved Promise。
考虑到表达式应该已经返回Promise,我在这里看不到问题。
await
与$.ajax
(以及getJSON
,post
等朋友一起使用)是安全的?或者是否存在代码失败的情况?Promise.resolve()
包装在一个不符合Promises / A +的jQuery 2延迟对象中,使其成为真正的Promise
,但是await
依赖于jQuery 2延迟对象会失败吗?我已经提到了上面的TypeScript示例,但我在JavaScript的一般上下文中提到了这个问题。如果TypeScript编译器处理await
的方式与Node.js / Babel / browsers在JavaScript中处理它的方式有所不同,请详细说明您的答案。