如何构造一个返回常量字符串的Bluebird promise?

时间:2014-12-19 10:17:00

标签: javascript promise bluebird

如果我有这样的东西

return this.retrieveArticles(blogId).then(function(response){
    return response.articles;
  }).then(_).call("findWhere", match).then(function(article){
    return {
      "article": article
    }
  });

我决定关掉最高位

    return response.articles;
  }).then(_).call("findWhere", match).then(function(article){
    return {
      "article": article
    }
  });

我该怎么做

Promise.return(articles).then(_).call("findWhere", match).then(function(article){
    return {
      "article": article
    }
  });

3 个答案:

答案 0 :(得分:2)

Promise.resolve(_(articles)).call("findWhere", match);

Promise.resolve(articles).then(_).call("findWhere", match);

答案 1 :(得分:1)

then您可以直接返回值:

var p = someFn().then(function(){
    return 43;
});
p.then(function(val){
    console.log(val); // 42
});

如果您不在链中,可以使用Promise.resolve

 var p = Promise.resolve(42);

 p.then(function(val){
     console.log(val); // 42
 });

大多数图书馆提供这些变体。另一个例子是Bluebird - 在bluebird中,你可以使用Promise.method强制函数返回一个promise,无论你是否自己返回一个值或一个promise。

答案 2 :(得分:0)

function promiseString(str){
  return new Promise(function(resolve, reject) {
    return resolve(str)
  })
}

promiseString("hello world").then(function(x){
  console.log(x)
}