Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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 ES6中的Chaining.then()调用_Javascript_Es6 Promise - Fatal编程技术网

Javascript ES6中的Chaining.then()调用

Javascript ES6中的Chaining.then()调用,javascript,es6-promise,Javascript,Es6 Promise,我认为在使用ES6 Promises时,应该可以链接.then()方法。换句话说,我认为在解析承诺时,传递给resolve函数的值应该传递给任何链式处理程序。如果是这样的话,为什么值在下面的链式处理程序中没有定义 function createPromise() { return new Promise((resolve) => { resolve(true); }); } createPromise() .then((value) => { conso

我认为在使用ES6 Promises时,应该可以链接.then()方法。换句话说,我认为在解析承诺时,传递给resolve函数的值应该传递给任何链式处理程序。如果是这样的话,为什么值在下面的链式处理程序中没有定义

function createPromise() {
  return new Promise((resolve) => {
    resolve(true);
  });
}

createPromise()
  .then((value) => {
    console.log(value); // expected: true, actual: true
  })
  .then((value) => {
    console.log(value); // expected: true, actual: undefined
  });

你必须在承诺的范围内归还它才能传递它。或者创造一个新的承诺来解决这个问题

createPromise()
.then((value) => {
    return value;
})
.then((value) => {
    console.log(value);
});

每个
then()
都可以返回一个值,该值将用作下一次
then()
调用的解析值。在第一次
then()
中,您不返回任何内容,因此
值在下一次回调中未定义。在第一个中返回
,使其在第二个中可用

函数createPromise(){
返回新承诺((解决)=>{
决心(正确);
});
}
createPromise()
。然后((值)=>{
console.log(value);//预期值:true,实际值:true
返回值;
})
。然后((值)=>{
console.log(value);//预期值:true,实际值:true

});
。然后
始终返回解析为函数回调中返回的值的承诺。由于在第一次调用
时未返回任何内容,因此
undefined
将成为所返回承诺的解析值

换句话说,如果要在对
的第二次调用中解析
true
,则必须在第一次调用中返回它,如下所示

createPromise() // returns a Promise
  .then(function (value) {
    console.log(value); // => true
    return value; // now this will return a Promise that resolves the value `true`
  }).then(function (value) {
    console.log(value) // => true
  });

如果需要更多信息,您可以参考以获取ES2015承诺。

您不会返回任何内容以链接
。然后()
用作值。
createPromise() // returns a Promise
  .then(function (value) {
    console.log(value); // => true
    return value; // now this will return a Promise that resolves the value `true`
  }).then(function (value) {
    console.log(value) // => true
  });