逻辑运算符如何在 Javascript 中使用 Promise



我正在学习一个关于承诺的教程,遇到了以下带有逻辑运算符的承诺的使用,我不太理解。在下面的示例中,有一个函数getJSON返回一个 promise。并且它连接到一个未初始化的变量storyPromise使用||(逻辑OR??(运算符反复(storyPromise = storyPromise || getJSON('story.json');(。我不确定OR带有 promise 的变量是什么意思,尤其是在变量undefined开始时。

有人可以帮忙解释相关生产线的逻辑/工作流程吗?承诺如何与布尔变量相互作用?

(我知道非常基本的Javascript,但不了解现代功能,如promises(

var storyPromise;
function getChapter(i) {
  storyPromise = storyPromise || getJSON('story.json');
  return storyPromise.then(function(story) {
    return getJSON(story.chapterUrls[i]);
  })
}
// and using it is simple:
getChapter(0).then(function(chapter) {
  console.log(chapter);
  return getChapter(1);
}).then(function(chapter) {
  console.log(chapter);
})

getJSON()函数定义如下:

function get(url) {
  // Return a new promise.
  return new Promise(function(resolve, reject) {
    // Do the usual XHR stuff
    var req = new XMLHttpRequest();
    req.open('GET', url);
    req.onload = function() {
      // This is called even on 404 etc
      // so check the status
      if (req.status == 200) {
        // Resolve the promise with the response text
        resolve(req.response);
      }
      else {
        // Otherwise reject with the status text
        // which will hopefully be a meaningful error
        reject(Error(req.statusText));
      }
    };
    // Handle network errors
    req.onerror = function() {
      reject(Error("Network Error"));
    };
    // Make the request
    req.send();
  });
}
function getJSON(url) {
  return get(url).then(JSON.parse);
}
这意味着如果

定义了 storypromise 的值,则选择它,否则调用方法 getjson(( 并分配从那里返回的值。这也是许多其他语言的常见做法。"or"的操作数可以是变量或方法。

相关内容

  • 没有找到相关文章

最新更新