【问题标题】:Understanding promise syntax理解承诺语法
【发布时间】:2014-10-26 14:02:44
【问题描述】:

我一直在阅读有关承诺的内容。 但是当它归结为真实的东西时,我想我找不到正确的语法。 我需要你的帮助,我不懂一些基本的东西,请帮助我找到它。

这是我损坏的代码:

var Q = require('es6-promise').Promise;

function timePrinting(num) {
    return function promice(resolve, reject) {

         /*time consuming action*/

        return resolve("Complete printing " + num + " seconds");
    }
}

Q = timePrinting(15).then(console.log(data), null);

【问题讨论】:

  • 这对于一个问题来说太宽泛了,您是在问如何chain promises 还是如何convert setTimeout to a promise
  • 我只是询问了 Promise 的语法,其余的都被删掉了。谢谢
  • 如果您询问如何将某些内容转换为承诺 - 请参阅我链接到的问题:stackoverflow.com/questions/22519784/… 它应该解释如何将回调转换为承诺。如果“耗时的操作”已经返回了一个承诺,你可以return timeConsumingAction(...)return timeConsumingAction(...).then(...
  • 它应该返回一个应该在级联中解决的承诺。然后
    问题是它不起作用...调用的语法或我所依据的逻辑有问题从我无法弄清楚的函数返回承诺:-/
  • 如果您在 jsfiddle.net 上创建了一个孤立的小提琴来说明问题(或在此处的堆栈 sn-ps 中),那就太棒了。就目前而言,很难理解您在这里问什么。

标签: javascript promise


【解决方案1】:

你正在做的是返回一个带有两个参数的新函数。

返回一个承诺

var Promise = require('es6-promise').Promise;

function timePrinting(num) {
    return new Promise(function (resolve, reject) {   
        resolve("Complete printing " + num + " seconds");  // write this line when the promise should be fulfilled 
    });
}

有了这个,你就可以了

timePrinting(100).then(function (result) {
    console.log(result);
});

记录您传递给resolve的字符串

关于 ES6 承诺的好文章:http://www.html5rocks.com/en/tutorials/es6/promises/

【讨论】:

  • 这仍然行不通,如果您正在执行异步的time consuming action,它将在该函数完成之前返回。另一方面,如果你不想等待它并且你想返回一个同步结果 - 你不应该返回一个承诺开始。
  • 我得到:return new Promise(function (resolve, reject) { ^ ReferenceError: Promise is not defined
  • @BenjaminGruenbaum,这在异步时不会返回。构造的 promise 对象将处于挂起状态,直到调用 resolvereject。不信可以在FF里运行下面的代码hastebin.com/zuyujanive.js
  • @MishaShblin,你需要第一行var Promise = require('es6-promise').Promise;
  • @XrXrXr 我很清楚 promises 是如何工作的,谢谢。我的意思是在最后一行调用resolve 而不管任何异步操作都是多余和愚蠢的。如果您正在计时同步操作,则返回一个普通值,或者如果您不是,则将 resolve 放入异步操作的回调中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2015-02-22
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
相关资源
最近更新 更多