我如何创建一个javascript承诺,它解析为一个then
How do I create a javascript promise which resolves to a thenable?
我正在使用承诺与faye浏览器客户端一起工作,并且我有一个函数,在执行异步操作后创建faye客户端,如下所示:
function fayeClient() {
return doSomethingAsychronous().then(function() {
var faye_client = new Faye.Client('http://localhost/faye');
return faye_client;
});
}
,我想这样使用它:
fayeClient().then(function(faye_client) {
// do something with faye_client
});
问题是,faye_client
也是然后,这意味着fayeClient
返回的承诺解析为faye_client
"解析"到的值。但是,我希望承诺直接解决到faye_client
。
我甚至不能使用Promise.resolve(faye_client);
手动包装承诺中的值,因为使用了相同的承诺解析过程。
我认为这可能是faye误用了enable,因为faye_client
不代表一个未知的值。
是否有任何方法可以使承诺解析为一个值,同时也是一个值?
不返回faye_client
,直接将其包装在对象中。它很丑,但这是你对A+承诺的唯一选择:
return {client: faye_client}; // no longer a thenable
一些可选的承诺实现暴露了一个不能递归同化的。then或。chain,但老实说,我会避免这些。
如果使用new Promise
构造函数来解析承诺呢?
return new Promise(function(resolve, reject) {
resolve(faye_client);
});
相关文章:
- Dispatch()调用一个函数,但是.then()不调用;我不在React Redux上工作
- CasperJs then() 是否等待上一个函数中发出的事件
- 在 then() 中断开 for 循环 在一个承诺
- 如何在jQuery中做一个速记if-then?这些是可链接的吗?
- 用一个参数承诺 .then()
- 承诺链接:在next-then回调中使用上一个承诺的结果
- Angularjs.then函数创建一个var以传递到外部.then
- Angular js.then不是一个函数
- 如何在angularfire中的另一个函数中使用.then()函数的结果
- 返回一个承诺,而不是用angular's $q.then()来解决它
- 使用AngularJS创建一个动态表——从success/error方法到.then()方法需要帮助
- 我如何创建一个javascript承诺,它解析为一个then
- 如何从& then"链中的最后一个承诺返回函数中的承诺
- 如何重用一个函数,是在一个链之间的then(承诺相关)
- 如何打电话“申请”?在Javascript中基于承诺的设置中传递参数给下一个then()
- 将从节点promise返回的对象循环到下一个.then
- '.then'函数工作在量角器E2E测试的一个angularjs
- Angular的承诺(关于一个承诺?)或者如何在$http之后链接一个.then.成功的角度
- Node.js的一个forEach循环中的Async承诺在另一个then语句中
- 如何从then()函数中的Promise访问内容,并在下一个then(