我不确定那会不会有效。我建议:
var p = new Promise(function (resolve, reject) {
$.getJSON('api/values', null)
.then(resolve, reject);
});
最好您可以创建一个适配器函数,如下:
var toPromise = function ($promise) {
return new Promise(function (resolve, reject) {
$promise.then(resolve, reject);
});
});
var p = toPromise($.getJSON('api/values', null));
toPromise
函数没有意义,因为它已经作为原生API的一部分存在:它被称为Promise.resolve
! - BergitoPromise
函数没有意义,因为它已经作为原生API的一部分存在:它被称为Promise.resolve
! - undefined是的,Promise.resolve() API支持将 thenable 对象作为参数传入。因此,传递一个 jQuery 延迟对象会完美地工作。
.then(function (data, textStatus, jqXhr) {})
,则这种方法将不起作用,因为 Promises
仅支持单个参数。您需要手动将jQuery的“promise”转换为 new Promise(...)
并在其中编排参数。 - nicodemus13我更喜欢组合:
const successCb1 = ()=>$.getJSON('api/values'),
successCb2 = (json)=>alert(json),
errorCb = (e)=>alert(e);
Promise
.resolve()
.then(successCb1)
.then(successCb2)
.catch(errorCb);