首页 > 解决方案 > Chrome 开发工具 - javascript 片段测试:最后一行出现“未捕获的语法意外输入结束”错误

问题描述

我正在尝试使用 Chrome 开发工具测试以下代码段,但在代码段的最后一行出现此错误...找不到错误的位置...

function myPromise1(time1, ok1){
  return new Promise((resolve, reject) => {
    // do stuff 1 async
    setTimeout(() => {
      if ( ok1 ) {
        resolve('stuff-1 worked')
      } else {
        reject(Error('stuff-1 failed'))
      }
    }, time1)
  });

  function myPromise2(time2, ok2){
    return new Promise((resolve, reject) => {
      // do stuff 2 async
      setTimeout(() => {
        if ( ok2 ) {
          resolve('stuff-2 worked')
        } else {
          reject(Error('stuff-2 failed'))
        }
      }, time2)
    });

    function myPromise3(time3, ok3){
      return new Promise((resolve, reject) => {
        // do stuff 3 async
        setTimeout(() => {
          if ( ok3 ) {
            resolve('stuff-3 worked')
          } else {
            reject(Error('stuff-3 failed'))
          }
        }, time3)
      });

      const c1 = '';
      const c2 = '';
      const c3 = '';

      const promise1 = (val11, val12) => myPromise1(val11, val12)
      .then(p1Result => {
        c1 = p1Result;
        return;
      }, function(err1) {
        console.log('Error: ', err1);
        return;
      });

      const promise2 = (val21, val22) => myPromise2(val21, val22)
      .then((p2Result) => {
        c2 = p2Result;
        return;
      }, function(err2) {
        console.log('Error: ', err2);
        return;
      });

      const promise3 = (val31, val32) => myPromise2(val31, val32)
      .then((p3Result) => {
        c3 = p3Result;
        return;
      }, function(err3) {
        console.log('Error: ', err3);
        return;
      });

      const conditionalPromiseFlow = (...fns) => {
        if(fns.length === 0) return Promise.resolve()
        const [next] = fns;
        return next()
          .then(result => {
          if(result) {
            return conditional(...fns.slice(1));
          }
          return result;
        })
      }

      conditionalPromiseFlow(() => promise1(1000, true), () => promise2(2000, true), () => promise3(3000, true))
        .then(() => {
        console.log('Status 200 - ALL DONE');
        return;
      })
        .catch((error) => {
        console.log('Status ', error.status, ' - ', error.message);
        return;
      })  <== Error stated here

标签: javascriptcode-snippets

解决方案


这是用于测试承诺流程的更正片段...我可以使用 main() 行

conditionalPromiseFlow(() => promise1(1000, true), () => promise2(2000, true), () => promise3(3000, true))

当一个承诺被拒绝时,流程停止

function myPromise1(time1, ok1){
    console.log('Promise1', time1, ok1);
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if ( ok1 ) {
                resolve('stuff-1 worked');
            } else {
                reject(Error('stuff-1 failed'));
            }
        }, time1);
    });
}

function myPromise2(time2, ok2){
  console.log('Promise2', time2, ok2);
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if ( ok2 ) {
                resolve('stuff-2 worked');
            } else {
                reject(Error('stuff-2 failed'));
            }
        }, time2);
    });
}

function myPromise3(time3, ok3){
  console.log('Promise3', time3, ok3);
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if ( ok3 ) {
                resolve('stuff-3 worked');
            } else {
                reject(Error('stuff-3 failed'));
            }
        }, time3);
    });
}

let c1 = '';
let c2 = '';
let c3 = '';

const promise1 = (val11, val12) => myPromise1(val11, val12)
    .then(p1Result => {
      c1 = p1Result;
      return;
    }, function(err1) {
        err1.status = 300;
        throw err1;
    });

const promise2 = (val21, val22) => myPromise2(val21, val22)
    .then((p2Result) => {
      c2 = p2Result;
      return;
    }, function(err2) {
        err2.status = 300;
        throw err2;
    });

const promise3 = (val31, val32) => myPromise3(val31, val32)
    .then((p3Result) => {
      c3 = p3Result;
      return;
    }, function(err3) {
        err3.status = 300;
        throw err3;
    });

const conditionalPromiseFlow = (...fns) => {
  if(fns.length === 0) return Promise.resolve();
  const [next] = fns;
  return next()
    .then(result => {
      if(!result) {
        return conditionalPromiseFlow(...fns.slice(1));
      }
      return result;
    });
};

conditionalPromiseFlow(() => promise1(1000, true), () => promise2(2000, true), () => promise3(3000, true))
 .then(() => {
    console.log('Status 200 - ALL DONE');
    return;
  })
 .catch((error) => {
    console.log('Status ', error.status, ' - ', error.message);
    return;
  });

推荐阅读