javascript - 从 when.js 迁移到 ES6 Promise

标签 javascript node.js es6-promise when-js

我一直在使用when.js 来实现node.js 中的promise。我有一个如下所示的函数:

function my_func() {
    var d = when.defer();

    // Async actions simulated with timeout
    setTimeout(function() {
        //...
        if(error) {
            return d.resolve(error);
        }
        d.resolve(result);
    }, 1000)

    return d.promise;
}

我会这样称呼:

my_func().then(
    function(res) {
        //...
    },
    function(err) {
        // Handle error
    }
);

如何使用 ES6 Promise 做同样的事情?

最佳答案

您的原始函数在 if (error) 条件中存在一些错误,因此这里是更新的代码片段:

function my_func() {
    var d = when.defer();

    // Async actions simulated with timeout
    setTimeout(function() {
        //...
        if(error) {
            d.reject(error);
        }
        d.resolve(result);
    }, 1000)

    return d.promise;
}

变成了

function my_func() {
  return new Promise(function (resolve, reject) {
    //Async actions simulated with timeout
    setTimeout(function () {
      //...
      if (error) {
        reject(error);
      }
      resolve(result);
    }, 1000);
  });
}

MDN's Promise documentation 中对此进行了相当详细的介绍。

关于javascript - 从 when.js 迁移到 ES6 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36892515/

相关文章:

javascript - Electron :如何强制重新加载?

node.js - 部署到 App Engine 会产生 gulp 错误?

javascript - ES6 Promises 和类属性

javascript - 带有 json 存储的网格有时不显示数据

javascript - 使用 match(),但它不适用于字符串变量

JavaScript 静态变量

javascript - 再次使用正则表达式 - 从字符串 Javascript 中删除小单词

javascript - 如何使用 node.js 修复 Twilio 中无效的内容类型 header ?

javascript - 无用户身份验证 Foursquare API "Missing access credentials"- 400 错误

javascript - 在 axios 超时后得到通知