2个承诺的行为差异

Difference in behavior of 2 promises

我想删除 q 库。 第一个片段有效,第二个片段无效。 这两个功能有区别吗?

this.removeAll = function (db) {
   var def = Q.defer();
   db.collection(collectionName).deleteMany({})
       .then(success => {
           def.resolve(success);
       }, error => {
           def.reject(error);
       })
   return def.promise
}
this.removeAll = function (db) {

    return db.collection(collectionName).deleteMany({})
        .then(success => {
            resolve(success);
        }, error => {
            reject(error);
        })
}

您的第二个代码段中没有 resolvereject 函数可调用。

为了避免 deferred antipattern,您应该放弃整个 thencatch 调用:

this.removeAll = function (db) {
    return db.collection(collectionName).deleteMany({});
};