Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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 从when.js迁移到ES6承诺_Javascript_Node.js_Es6 Promise_When Js - Fatal编程技术网

Javascript 从when.js迁移到ES6承诺

Javascript 从when.js迁移到ES6承诺,javascript,node.js,es6-promise,when-js,Javascript,Node.js,Es6 Promise,When Js,我一直在使用when.js来表示node.js中的承诺。我的函数如下所示: function my_func() { var d = when.defer(); // Async actions simulated with timeout setTimeout(function() { //... if(error) { return d.resolve(error); } d.r

我一直在使用when.js来表示node.js中的承诺。我的函数如下所示:

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承诺做同样的事情?

结构非常相似:

function my_func() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            if (error) {
                reject('no');
            }
            resolve('yes')
        }, 1000);
    });
}

结构相当相似:

function my_func() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            if (error) {
                reject('no');
            }
            resolve('yes')
        }, 1000);
    });
}

您的原始函数在
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);
  });
}

这一点在

中得到了很好的阐述。您的原始函数在
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);
  });
}
这一点在本文中有相当充分的论述