Javascript 这里是否错误地使用了.concat()方法?
因此,我有两个ajax调用,它们被链接在一个承诺中 比如说Javascript 这里是否错误地使用了.concat()方法?,javascript,jquery,html,arrays,promise,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) 所以,这是清楚的。 但是,有时
promiseData.then(res1, res2) {
let responseOneParsed = JSON.parse(res1)
let responseTwoParsed = JSON.parse(res2)
}
我把这两个连接起来,就像这样
concatenatedArr = responseOneParsed.data.concat(responseTwoParse.data)
所以,这是清楚的。
但是,有时这两个ajax调用中的一个返回未定义的,因为响应是空的(应该是),我得到了错误:
error TypeError: Cannot read property 'concat' of undefined
这也是非常清楚的,但是如果另一个参数是
未定义的
,那么我如何缩放此代码以接受其中一个参数,这样它就不会失败?这里的.concat()
是否使用错误?您可以使用|
运算符和空数组:[]
像这样
concatenatedArr=(responseOneParsed.data | |【】)concat(responseWebParse.data | |【】)
这不就是正确的健全性检查吗
检查responseOneParsed.data是否有效,如果有效,请调用concat,否则,应用第二个数据
concatenatedArr = responseOneParsed.data ?
responseOneParsed.data.concat(responseTwoParse.data ? responseTwoParse.data: [] )
:responseTwoParse.data
一个非常基本的检查怎么样,比如
if(responseOneParsed.data).
我理解@JonathanLonowski为什么会发生这种情况,但需要检查这种情况..当第二个rsponse未定义时,它不会给出错误,因为它是作为参数传递给函数的,它没有调用函数。当我们使用未定义的值调用函数时,就会出现问题中提到的错误。只要在结果为空时让API返回[]
,代码就会一直工作。@ChrisG,我不能确定API来自第三方。若它是未定义的,那个么它根本并没有返回数组,而是返回对象。它是一条双向的街道,ResponseTo也可以是未定义的,不仅仅是responseOne@stormec所以这是一次精神检查。。美好的工作起来很有魅力!