我什么时候应该直接调用Promise.resolve()?

kra*_*er1 8 ecmascript-6 es6-promise

我已经看到本机ES6 Promise.resolve()可以直接调用 - 作为静态方法.Facebook正在他们的Flux示例中使用它.

但在什么情况下我应该这样做?排队的东西?或者不是使用window.setTimeout()

Ser*_*kin 13

Promise.resolve(object)需要在需要创建已解决的承诺时调用.例如,您可能有一个函数开始从服务器下载资源或返回其缓存版本:

function getImage(imageUrl) {
    if (imageUrl in this.cache) {
        // no need to download, return immediately
        return Promise.resolve(this.cache[imageUrl]);
    } else {
        return new Promise(function(resolve, reject) {
            // start downloading and eventually resolve
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 使用“*已解决*”具有误导性。返回的 Promise 不必已经被解析,并且对返回的 Promise 的“then()”调用的回调不一定会“很快”被调用(下一个周期..),并且可能需要无限量的时间。时间取决于发布到“resolve”调用中的内容。 (2认同)