【问题标题】:JS/ES offline and store a Promise for later useJS/ES 离线并存储一个 Promise 供以后使用
【发布时间】:2021-09-25 08:09:57
【问题描述】:

我怎样才能离线这个“示例”承诺—— 即将承诺归因于一个变量以供以后传递/使用---

// this example promise works OK... 
// just test with x=0 and x<>0
var x=0; 
( new Promise( ( a, b ) => 
    { if ( x==1 ) a(); else b(); } ) )
    .then( ()=>console.log( "RS=>OK" ), ()=>console.log( "RJ=>KO" ) 
    )

我想将承诺归因于一个变量,就像

var p = new Promise( ... )

但是承诺是在创建时执行的......

?我怎样才能推迟这个执行到以后 在 promise 上调用方法...例如:p.exec()

【问题讨论】:

  • 实际用例是什么? “稍后”是什么时候?当x 是一个数字时,x.exec() 应该怎么做?
  • 功能正是您所需要的。它们可以在稍后执行。
  • 对不起@Andreas...写入错误...它是 p.exec()...
  • 你想要的就像要求某人向你承诺某事,而没有告诉对方承诺什么。这没有意义。

标签: javascript promise ecmascript-next


【解决方案1】:

Promise 立即执行。但是您可以将它们包装在一个函数中,该函数在调用时会创建/执行 Promise。例如:

var p = () =>
  new Promise( ( a, b ) => 
    { if ( x==1 ) a(); else b(); } ) )
  .then( ()=>console.log( "RS=>OK" ), ()=>console.log( "RJ=>KO" );

// when ready to start
var actualPromise = p();
await actualPromise;

【讨论】:

  • 是的,,, 这是我经常看到的例子,,,, 但是你正在创建/存储它在一个匿名函数中以便稍后执行......我认为接收它会更有益一个 Promise.object... 这样我们就可以 1. 在执行之前对其重新编程,,, 2. 在执行之后检查它,,, 和 3. 重置/重用它,,,
  • @ZEE 这不是 Promise 机制的工作原理。
  • @ZEE 承诺不会在以后开始。创建一个 Promise 会构造一个已经挂起的 Promise。没有“以后开始承诺”的概念。您可能要做的是构造一个 executor 函数 并在将其提供给 promise 构造函数之前对其进行预处理(通过组合或其他方式)。但是,我想不出一个真正的用例,相反,我希望构建/处理然后执行一个异步函数。异步函数隐式返回 Promise,因此调用 async function foo() {} 与使用 Promise 构造函数基本相同,但处理的选项更多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 2011-07-10
相关资源
最近更新 更多