Cam*_*tin 4 javascript promise
我正在使用promises 与faye浏览器客户端一起工作,我有一个函数可以在做异步操作后创建一个faye客户端,如下所示:
function fayeClient() {
return doSomethingAsychronous().then(function() {
var faye_client = new Faye.Client('http://localhost/faye');
return faye_client;
});
}
Run Code Online (Sandbox Code Playgroud)
我想这样使用它:
fayeClient().then(function(faye_client) {
// do something with faye_client
});
Run Code Online (Sandbox Code Playgroud)
问题是,faye_client这也是一个可靠的,这意味着通过fayeClient解析返回到faye_client"解析" 的值返回的承诺.但是,我希望承诺直接解决faye_client.
我甚至无法手动将值包装在promise中Promise.resolve(faye_client);,因为使用了相同的promise解析过程.
我认为这可能表明在faye方面滥用了那些人,因为faye_client这并不代表一个尚未知晓的价值.
有没有办法做出一个可以解决价值的承诺?
而不是faye_client直接将其包装在一个对象中.这很丑陋,但它是A +承诺的唯一选择:
return {client: faye_client}; // no longer a thenable
Run Code Online (Sandbox Code Playgroud)
一些替代的承诺实现暴露了一个不会递归同化的.then或.chain但老实说我会避免这些.
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |