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);
})
}
您的第二个代码段中没有 resolve
和 reject
函数可调用。
为了避免 deferred antipattern,您应该放弃整个 then
和 catch
调用:
this.removeAll = function (db) {
return db.collection(collectionName).deleteMany({});
};
我想删除 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);
})
}
您的第二个代码段中没有 resolve
和 reject
函数可调用。
为了避免 deferred antipattern,您应该放弃整个 then
和 catch
调用:
this.removeAll = function (db) {
return db.collection(collectionName).deleteMany({});
};