栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用另一个承诺来履行(不解决)承诺

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用另一个承诺来履行(不解决)承诺

除了我已经在问题中描述的解决方法之外,似乎没有其他解决方案。供将来参考,如果您想实现(而不是解决)

p
带有value
的诺言
val
,其中
val
另一个诺言,那么仅
p
通过参数调用诺言解析函数
val
将无法正常工作。它将导致
p
“锁定”在的状态
val
,以便一旦满足,
p
将使用
val
的分辨率值
val
来满足(请参见spec)。

相反,请包装

val
另一个对象并
p
对该对象进行解析:

var resolveP;  // Promise resolution function for pvar p = new Promise(    function(resolve, reject) {        resolveP = resolve;    });function fulfillPwithPromise(val) {  // Fulfills p with a promise val    resolveP({promise: val});}p.then(function(res) {    // Do something as soon as p is fulfilled...    return res.promise;}).then(function(res) {    // Do something as soon as the second promise is fulfilled...});

如果您已经知道这

val
是一个承诺,那么此解决方案就可以使用。如果您不能对
val
的类型做任何假设,那么您似乎很不走运。您必须 始终
将承诺解决方案值包装在另一个对象中,或者可以尝试检测是否
val
具有
then
类型为“功能” 的字段并有条件地包装它。

也就是说,在某些情况下,承诺解决方案的默认行为实际上可能会产生预期的效果。因此,仅在您确定要 实现 而不是用第二个承诺 解决
第一个承诺时,才使用上述解决方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/385202.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号