首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回报承诺的结果

回报承诺的结果
EN

Stack Overflow用户
提问于 2016-08-19 09:50:56
回答 2查看 61关注 0票数 0
代码语言:javascript
复制
function main() {
  matchUserToChatRoom(senderID)
    .then(function(chatRoom) {
      //FIXME: I want to be able to use chatRoom from the below function
      console.log(chatRoom)
    })
}

function matchUserToChatRoom(userId) {
  return models.User.findOne({where: {messenger_id: userId}})
    .then(function(user) {
       models.ChatRoom
        .findOrCreate({where: {status: "open"}, defaults: {status: "open"}})
        .spread(function(chatRoom, created) {
          chatRoom.addUser(user).then(function(chatRoom) {
            //FIXME: I want to use this "chatRoom" inside the main function
          })
        })
     })
  })
}

如何将chatRoom对象(这是嵌套承诺的结果)返回主函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-19 09:57:26

不要忘了回报承诺,以便被锁上链子。

代码语言:javascript
复制
function matchUserToChatRoom(userId) {
  return models.User.findOne({where: {messenger_id: userId}})
    .then(function(user) {
       return models.ChatRoom
        .findOrCreate({where: {status: "open"}, defaults: {status: "open"}})
        .spread(function(chatRoom, created) {
          return chatRoom.addUser(user);
        })
     })
  })
}
票数 4
EN

Stack Overflow用户

发布于 2016-08-19 09:56:06

这是为了得到灵感。您也需要使用reject

代码语言:javascript
复制
function matchUserToChatRoom(userId) {
return new Promise(function(resolve, reject){
  models.User.findOne({where: {messenger_id: userId}})
    .then(function(user) {
       models.ChatRoom
        .findOrCreate({where: {status: "open"}, defaults: {status: "open"}})
        .spread(function(chatRoom, created) {
          chatRoom.addUser(user).then(function(chatRoom) {
             resolve(chatRoom);
            //FIXME: I want to use this "chatRoom" inside the main function
          })
        })
     })
  })
}
});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39035993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档