如何从像ajax调用的promise中包装对象,返回值的差异?

时间:2017-09-24 15:49:34

标签: javascript jquery ajax promise

此问题类似于“How to wrap object in a Promise?”,但我需要澄清为什么我在返回值的类型上存在差异。

基本上,我想从本地缓存中获取数据对,如果没有,从服务器获取数据,将其存储到本地缓存。一旦存储了这对数据,然后对返回的参数执行其他操作(Part 1:1234567890s· s·Part 2:abcdefghijs· s·$ ) - 它们必须是字符串参数,但如果从缓存中命中,则它们是字符串,如果来自ajax,则它们是对象。

我不明白有什么不同。

我的代码就像:

doSmtg( stringParameter)

1 个答案:

答案 0 :(得分:0)

jQuery的.done().fail()方法与.then()(以及jQ 3 +中的.catch()具有相同的权力。)

更具体地说,使用.done().fail(),返回输入承诺,而不是新承诺,因此这些方法不具有过滤"功率; .done()或.fail()回调返回的任何值或承诺对promise链中的下游没有影响。回调仅适用于副作用。

所以,在promiseContent()中,而不是.done(successFn).fail(errorFn)

  • jQuery v< 3 :使用.then(successFn).then(null, errorFn)
  • jQuery v3 + :使用.then(successFn).catch(errorFn)