这里错误地使用了.concat()方法吗?

时间:2018-06-13 19:32:47

标签: javascript jquery html arrays promise

所以,我有两个ajax调用,它们被链接在一个承诺中。

例如

promiseData.then(res1, res2) {
 let responseOneParsed = JSON.parse(res1)
 let responseTwoParsed = JSON.parse(res2)
}

我正在连接这两个,就像这个

concatenatedArr = responseOneParsed.data.concat(responseTwoParse.data)

所以,这很清楚。 但是,有时这两个ajax调用中的一个返回undefined,因为响应是空的(应该是),并且我得到错误:

  error  TypeError: Cannot read property 'concat' of undefined

这又是非常清楚的,但是我如何扩展此代码以接受其中一个参数,如果其他参数是undefined,那么它不会失败?这里错误地使用了.concat()吗?

2 个答案:

答案 0 :(得分:4)

您可以使用||运算符和empty array: []

轻松完成 像这样 concatenatedArr = (responseOneParsed.data || []).concat(responseTwoParse.data || [])

答案 1 :(得分:1)

这不仅仅是一次正确的理智检查吗?

检查responseOneParsed.data是否有效,如果是,则调用concat,否则,应用第二个数据。

 concatenatedArr = responseOneParsed.data ? 
   responseOneParsed.data.concat(responseTwoParse.data ? responseTwoParse.data: [] )
   :responseTwoParse.data