gpt4 book ai didi

node.js - NodeJS - 问 - 如何在另一个 promise 中传递一个 promise

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:00 25 4
gpt4 key购买 nike

我想返回一个 promise 或将一个 promise 传递给另一个 promise ,但我不知道该怎么做。我的代码:

function seedUsers(){
var def = Q.defer();

_seedUsersInDb(function(err, users){
if(err){
return def.reject(err);
}
def.resolve(users);
})

return def.promise;
}

function seedDb(){
var def = Q.defer();

_checkCountOfUsers(function(count){
if(count > 0){
// already seeded
return def.resolve();
} else{
// we have to use seedUsers()
// ????????????????????
// how to pass seedUsers() ????
// ????????????????????
}
})

return def.promise;
}

我应该在指定部分放置哪些代码?谢谢

最佳答案

混合 promise 和未 promise 的函数很困惑,因此 promise 两者低级函数:

// promisify _seedUsersInDb()
function _seedUsersInDbAsync() {
var def = Q.defer();
_seedUsersInDb(function(err, users) {
if(err) def.reject(err);
else def.resolve(users);
});
return def.promise;
}

// promisify _checkCountOfUsers()
function _checkCountOfUsersAsync() {
var def = Q.defer();
_checkCountOfUsers(function(err, count) {
if(err) def.reject(err);
else def.resolve(count);
});
return def.promise;
}

现在,nodebacks 完全从更高级别的代码中消失,取而代之的是 promise 链。

function seedDb() {
return _checkCountOfUsersAsync.then((count) => {
return (count > 0) ? count : _seedUsersInDbAsync().then((users) => users.length);
});
}

关于node.js - NodeJS - 问 - 如何在另一个 promise 中传递一个 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40658962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com