相关疑难解决方法(0)

什么是明确的承诺构建反模式,我该如何避免它?

我编写的代码看起来像:

function getStuffDone(param) {           | function getStuffDone(param) {
    var d = Q.defer(); /* or $q.defer */ |     return new Promise(function(resolve, reject) {
    // or = new $.Deferred() etc.        |     // using a promise constructor
    myPromiseFn(param+1)                 |         myPromiseFn(param+1)
    .then(function(val) { /* or .done */ |         .then(function(val) {
        d.resolve(val);                  |             resolve(val);
    }).catch(function(err) { /* .fail */ |         }).catch(function(err) {
        d.reject(err);                   |             reject(err);
    });                                  |         });
    return d.promise; /* or promise() */ |     });
}                                        | }
Run Code Online (Sandbox Code Playgroud)

有人告诉我这个被称为" 延迟反模式 "或" Promise构造函数反模式 ",这个代码有什么不好,为什么这被称为 …

javascript promise q bluebird es6-promise

479
推荐指数
3
解决办法
7万
查看次数

Promise 和 Promise.all(array) 在数组完成之前执行

回调Promise.all(arr).then在数组完成之前执行,因此它不会捕获其元素。我怎样才能正确地做到这一点?

\n

\r\n
\r\n
var arr = [];\n\nfor (var i = 0; i < 2; i++) {\n  arr.push((function() {\n    new Promise(function(resolve, reject) {\n      setTimeout(function() {\n        console.log("Resolved!");\n        resolve();\n      }, 3000);\n    });\n  })());\n}\n\nPromise.all(arr).then(function() {\n  console.log("Done");\n});
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

我的预期结果是:

\n
Resolved!\nResolved!\nDone\n
Run Code Online (Sandbox Code Playgroud)\n

但真实的结果是:

\n
Done\nResolved!\nResolved!\n
Run Code Online (Sandbox Code Playgroud)\n

上面的代码只是一个例子。我更改了如下结构,代码不再有问题,但由于我的应用程序结构,我应该使用for循环。push

\n

\r\n
\r\n
var p1 = new Promise(function(resolve, reject) {\n  setTimeout(function() {\n    console.log("Resolved #1");\n    resolve();\n  }, 1000);\n});\nvar p2 = new Promise(function(resolve, reject) {\n  setTimeout(function() {\n    console.log("Resolved #2");\n    resolve();\n  }, …
Run Code Online (Sandbox Code Playgroud)

javascript function promise es6-promise

2
推荐指数
1
解决办法
1082
查看次数

标签 统计

es6-promise ×2

javascript ×2

promise ×2

bluebird ×1

function ×1

q ×1