【发布时间】:2018-01-22 21:58:43
【问题描述】:
以前从未使用过defer,但我的代理要求我使用带有承诺的defer。
在 mozilla 延迟页面中,它说 defer 已过时,不应再使用。但在同一页面中有示例。
我的问题是,为什么要在 promise 中使用 defer?下面的代码有什么好处,只写更少的代码?我应该定义一个新的承诺而不是那个?
export function defer () {
const deferred = {}
deferred.promise = new Promise((resolve, reject) => {
deferred.resolve = resolve
deferred.reject = reject
})
return deferred
}
以及使用它的代码:
export async function waitForPredicate (peer, path, predicate, cancelToken) {
const deferredFetcher = defer()
...
let result = predicate(data)
if (result) {
deferredFetcher.resolve(result)
}
})
【问题讨论】:
-
你的“代理人”是谁?
-
我不能给我的代理名字,但它很大。其实我不是在问 defer().promise 和 Promise 之间的区别。我在问为什么要使用旧式 defer 作为承诺。
-
我要求你更换你的代理人——他不懂承诺 :-)
-
我不这么认为,他是这方面的大师。我没有写完整的故事。有一个承诺竞赛,其中之一是超时承诺。还有 tagPromise 功能。人们仍然使用它一定是有原因的。
标签: javascript promise deferred