【发布时间】:2016-10-28 22:30:13
【问题描述】:
我正在使用 Promise 处理 faye browser client,并且我有一个函数可以在执行异步操作后创建一个 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 也是一个thenable,这意味着fayeClient 返回的promise 解析为faye_client '解析' 到的值。
但是,我希望承诺直接解析为faye_client。
我什至无法使用 Promise.resolve(faye_client); 手动将值包装在 promise 中,因为使用了相同的 promise resolution procedure。
我认为这可能表明 faye 滥用了 thenables,因为faye_client 并不代表未知的值。
有没有办法做出一个可以解析为一个值的承诺?
【问题讨论】:
-
很好的问题。不过,我对一个短语有点困惑:“代表 faye 滥用承诺”是什么意思?您的意思是“faye 滥用承诺”,即“faye 滥用承诺”吗? (在这种情况下,faye 怎么会滥用 promise?如果我理解正确的话,faye 根本不使用 promise;它只是碰巧有一个“then”方法。)或者你的意思是“promises 在 faye 上行为不端”代表”?还是您的意思是“我代表 faye 滥用了承诺”?
-
是的,我的意思是“faye 对承诺的滥用”,但这有点不准确,所以我应该说“faye 对 thenables 的滥用”。
标签: javascript promise