我有一个原生的JavaScript承诺链,看起来像这样:

function chain() {
  promiseFunction1().then(function(data) {

    console.log("some message");
    return promiseFunction2();

  }).then(function(data) {

    console.log("some message");
    return promiseFunction3();

  }).then(function(data) {

    console.log("some message");
    return promiseFunction4();

  }).catch(function(error) {
    console.error(error.stack);
  });

}


promise函数看起来像这样:

function promiseFunction() {
  return new Promise(function(resolve,reject) {
     someCallbackfunction(arg, function(err, data){
        if (err) {
          return reject(err);
        }
        console.log("some message");
        return resolve(data);
     });
  });
}


我的代码似乎可以从我所知道的内容中很好地解决(没有错误,并且我可以从终端反馈中看出我需要开始运行的操作),但是无论我尝试什么,我一生都无法获得任何形式的控制台日志记录。

1)为什么这些语句没有像我期望的那样打印?

2)我该如何恢复我的详细输出?

最佳答案

事实证明,问题最终出在外部。
在我的诺言链中的某个地方,我用回调函数调用了一个外部库,但是该库从未响应,这导致我的链永远等待。

如果您遇到类似的情况,建议您仔细检查链中的所有功能是否出现类似的情况。

一种快速的调试方法是在x数量的时间后解决该承诺的链中的每个promise函数中放置一个超时,这样,您至少可以获取日志记录结果,而不必永远陷入黑暗。

关于javascript - 利用 native javascript Promise链中的控制台日志记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37397094/

10-09 15:03