Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 蓝鸟-承诺追踪进展_Javascript_Node.js_Bluebird - Fatal编程技术网

Javascript 蓝鸟-承诺追踪进展

Javascript 蓝鸟-承诺追踪进展,javascript,node.js,bluebird,Javascript,Node.js,Bluebird,我想跟踪我将从Node.js进行的承诺调用的进度,更清楚地说,我需要显示一个进度条,其中包含到达成功/错误回调函数的百分比 我查看了Bluebird文档,但没有发现与此相关的内容。如果我错了,请纠正我 我的代码附在下面 const getAsync = Promise.promisify(cmd.get, { multiArgs: true, context: cmd }) => // Need to show a progress bard over here getAsync('

我想跟踪我将从
Node.js
进行的承诺调用的进度,更清楚地说,我需要显示一个进度条,其中包含到达成功/错误回调函数的百分比

我查看了
Bluebird
文档,但没有发现与此相关的内容。如果我错了,请纠正我

我的代码附在下面

const getAsync = Promise.promisify(cmd.get, { multiArgs: true, context: cmd })

=> // Need to show a progress bard over here 

getAsync('some command').then(data => { 
  spinner.color = 'green';
  spinner.text = 'Command completed..'
  spinner.succeed();
}).catch(err => {
  spinner.color = 'red';
  console.log('Error occured..', err)
})

有人能解释一下吗?

你确实能做到,但不是按照你要求的方式。因此,您有两种选择:

  • 轮询另一个调用中的状态-promise必须修改轮询调用可以获取的某些全局变量
  • 使用套接字通过发出事件将进度传达给客户端

  • 问题是,这个承诺就是一个承诺,它要么被解决,要么被拒绝,没有进展状态。它可能会抛出错误,但仅此而已。

    承诺只有三个阶段<代码>挂起、已解决、已拒绝。它们之间没有中间阶段。您希望如何报告进度百分比?你能用这段代码更新你的代码吗?你也检查过了吗?答应。合作计划?@Prakashsharma谢谢!这是有道理的。@HosseinPursultani将检查链接。。谢谢如果你在没有承诺的情况下使用它,
    cmd.get
    如何报告“进度”?感谢你的回复,伙计,Reg,point#1,我们有类似的功能吗?对于#1,我没有现成的解决方案,这只是一个概念。其思想是,在客户端,在发送请求时,触发一个setInterval()函数并定期调用某个URL,比如说每500到1000毫秒调用一次。检查的状态完成后,清除间隔。或者使用setTimeot()并在收到状态后检查它,必要时再次调用相同的函数。在服务器端,创建一个endpoind来报告当前状态,并在异步任务中修改当前状态。您可能需要使用一些快速数据库(Redis)来设置给定任务的ID和进度。